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正则表达式(regar expression)
Sep 10 PHP
shell脚本作为保证PHP脚本不挂掉的守护进程实例分享
Jul 15 PHP
php命令行使用方法和命令行参数说明
Apr 08 PHP
destoon整合ucenter后注册页面不跳转的解决方法
Jun 21 PHP
PHP执行Curl时报错提示CURL ERROR: Recv failure: Connection reset by peer的解决方法
Jun 26 PHP
详解PHP中instanceof关键字及instanceof关键字有什么作用
Nov 05 PHP
thinkPHP自定义类实现方法详解
Nov 30 PHP
PHP常见字符串处理函数用法示例【转换,转义,截取,比较,查找,反转,切割】
Dec 24 PHP
iis6手工创建网站后无法运行php脚本的解决方法
Jun 08 PHP
php处理抢购类功能的高并发请求
Feb 08 PHP
Laravel框架学习笔记之批量更新数据功能
May 30 PHP
php使用fputcsv实现大数据的导出操作详解
Feb 27 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
使用Apache的htaccess防止图片被盗链的解决方法
2013/04/27 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
php获取微信openid方法总结
2019/10/10 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
PHP使用openssl扩展实现加解密方法示例
2020/02/20 PHP
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
2010/03/04 Javascript
jquery动态改变onclick属性导致失效的问题解决方法
2013/12/04 Javascript
javascript获取鼠标点击元素对象(示例代码)
2013/12/20 Javascript
js数组操作常用方法
2014/05/08 Javascript
js实现非常简单的焦点图切换特效实例
2015/05/07 Javascript
JS实现霓虹灯文字效果的方法
2015/08/06 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
jquery自定义插件开发之window的实现过程
2016/05/06 Javascript
echarts3 使用总结(绘制各种图表,地图)
2017/01/05 Javascript
用vue快速开发app的脚手架工具
2018/06/11 Javascript
mpvue将vue项目转换为小程序
2018/09/30 Javascript
解决Vue打包后访问图片/图标不显示的问题
2019/07/25 Javascript
JavaScript闭包相关知识解析
2019/10/19 Javascript
nodejs nedb 封装库与使用方法示例
2020/02/06 NodeJs
python 实现删除文件或文件夹实例详解
2016/12/04 Python
Pandas标记删除重复记录的方法
2018/04/08 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
Python模块/包/库安装的六种方法及区别
2020/02/24 Python
expedia比利时:预订航班+酒店并省钱
2018/07/13 全球购物
英国天然宝石首饰购买网站:Gemondo Jewellery
2018/10/23 全球购物
创伤外科专业推荐信范文
2013/11/19 职场文书
打架检讨书50字
2014/01/11 职场文书
保护母亲河倡议书
2014/04/14 职场文书
幼儿园保育员责任书
2014/07/22 职场文书
2016暑期师德培训心得体会
2016/01/09 职场文书
500字作文之关于爸爸
2019/11/14 职场文书
nginx配置proxy_pass中url末尾带/与不带/的区别详解
2021/03/31 Servers
解决Python字典查找报Keyerror的问题
2021/05/26 Python
Anaconda安装pytorch及配置PyCharm 2021环境
2021/06/04 Python