PHP序列化操作方法分析


Posted in PHP onSeptember 28, 2016

本文实例讲述了PHP序列化操作方法。分享给大家供大家参考,具体如下:

序列化就是将变量数据转换为字符串(跟类型转换机制不同),一般应用于存储数据(文件),然后在别的情形下恢复(反序列化)

序列化:

$val = serialize($var);
file_put_contents('./*.txt',$val);

反序列化:

$val = file_get_contents('./*.txt');
$var = unserialize($val);

当一个对象进行序列化操作时,会自动调用类中的__sleep();

当反序列化一个对象的时候,会自动调用对应类的__wakeup(),反序列操作中,必须具备了对应的类的声明。

__sleep()可以进行一些数据(资源)的清理关闭操作,并返回一个数组,该数组存储一些需要进行序列化的对象的属性,即可以挑选属性进行序列化。

class bee{
 public $a;
 protected $b;
 private $c;
 public function __sleep(){
  return array('a','b');
  }
}

__wakeup()在进行反序列话操作的时候进行某些有用的‘数据恢复工作',比如连接数据库

public function __wakeup(){
 $this->func();
}

__tostring()

当把一个对象当作一个字符串来看待处理的时候,会自动调用该方法。通过该方法可以返回合适的字符串,如果没该定义该方法就会出错。

class bee{
 public function __tostring(){
  echo 'string';
 }
}
$obj = new bee();
//对象不能直接当字符串使用
echo $obj;

__invoke()

当对象当作一个方法使用的时候,会自动调用该方法

class bee{
 public function __invoke(){
  echo 'invoke';
 }
}
$obj = new bee();
//对象不能直接当字符串使用
echo $obj();

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
生成静态页面的PHP类
Jul 15 PHP
多重?l件?合查?(二)
Oct 09 PHP
小文件php+SQLite存储方案
Sep 04 PHP
php中通过curl模拟登陆discuz论坛的实现代码
Feb 16 PHP
php selectradio和checkbox默认选择的实现方法详解
Jun 29 PHP
php使用mb_check_encoding检查字符串在指定的编码里是否有效
Nov 07 PHP
关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
Dec 21 PHP
PHP Oauth授权和本地加密实现方法
Aug 12 PHP
YII框架批量插入数据的方法
Mar 18 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
Laravel框架下载,安装及路由操作图文详解
Dec 04 PHP
PHP7新增函数
Mar 09 PHP
PHP类的特性实例分析
Sep 28 #PHP
PHP页面跳转操作实例分析(header方法)
Sep 28 #PHP
PHP会话操作之cookie用法分析
Sep 28 #PHP
PHP session会话操作技巧小结
Sep 27 #PHP
PHP简单预防sql注入的方法
Sep 27 #PHP
PHP数据对象PDO操作技巧小结
Sep 27 #PHP
PHP基于GD库的图像处理方法小结
Sep 27 #PHP
You might like
PHP中调用JAVA
2006/10/09 PHP
PHP+MYSQL 出现乱码的解决方法
2008/08/08 PHP
用PHP和Shell写Hadoop的MapReduce程序
2014/04/15 PHP
php中运用http调用的GET和POST方法示例
2014/09/29 PHP
PHP中把数据库查询结果输出为json格式简单实例
2015/04/09 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
php使用glob函数遍历文件和目录详解
2016/09/23 PHP
用prototype实现的简单小巧的多级联动菜单
2007/03/24 Javascript
一个tab标签切换效果代码
2009/03/27 Javascript
Javascript delete 引用类型对象
2013/11/01 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
2014/05/08 Javascript
JS实现当前页居中分页效果的方法
2015/06/18 Javascript
基于JavaScript实现TAB标签效果
2016/01/12 Javascript
JS脚本实现动态给标签控件添加事件的方法
2016/06/02 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
2017/03/30 Javascript
利用nodeJs anywhere搭建本地服务器环境的方法
2018/05/12 NodeJs
vuex页面刷新后数据丢失的方法
2019/01/17 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
python字典get()方法用法分析
2015/04/17 Python
Python基于PyGraphics包实现图片截取功能的方法
2017/12/21 Python
Python GUI布局尺寸适配方法
2018/10/11 Python
python得到电脑的开机时间方法
2018/10/15 Python
Python读取分割压缩TXT文本文件实例
2020/02/14 Python
Python 整行读取文本方法并去掉readlines换行\n操作
2020/09/03 Python
Python模拟登录和登录跳转的参考示例
2020/10/30 Python
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
蒂娜商店:Tiina the Store
2019/12/07 全球购物
意大利网上购书网站:Libraccio.it
2021/02/03 全球购物
游戏商店:Eneba
2020/04/25 全球购物
财务会计人员岗位职责
2013/11/30 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
2015年保险业务员工作总结
2015/05/27 职场文书
药品销售员2015年终工作总结
2015/10/22 职场文书
详解TS数字分隔符和更严格的类属性检查
2021/05/06 Javascript
安装pytorch时报sslerror错误的解决方案
2021/05/17 Python