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 相关文章推荐
粗略计算在线时间,bug:ip相同
Dec 09 PHP
PHP mail 通过Windows的SMTP发送邮件失败的解决方案
May 27 PHP
PHP开发过程中常用函数收藏
Dec 14 PHP
php笔记之常用文件操作
Oct 12 PHP
php daddslashes()和 saddslashes()有哪些区别分析
Oct 26 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
Jun 03 PHP
php抽奖小程序的实现代码
Jun 18 PHP
php中常见的sql攻击正则表达式汇总
Nov 06 PHP
php抓取网站图片并保存的实现方法
Oct 29 PHP
分享10段PHP常用代码
Nov 11 PHP
php实现微信支付之退款功能
May 30 PHP
如何在PHP中使用AES加密算法加密数据
Jun 24 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中经典方法实现判断多维数组是否为空
2011/10/23 PHP
解析isset与is_null的区别
2013/08/09 PHP
php分页查询的简单实现代码
2017/03/14 PHP
js 目录列举函数
2008/11/06 Javascript
js GridView 实现自动计算操作代码
2009/03/25 Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
基于jQuery的表格操作插件
2010/04/22 Javascript
ExtJS[Desktop]实现图标换行示例代码
2013/11/17 Javascript
Javascript浅谈之引用类型
2013/12/18 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
JavaScript实现文字与图片拖拽效果的方法
2015/02/16 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
2016/05/19 Javascript
Three.js学习之正交投影照相机
2016/08/01 Javascript
详解Angualr 组件间通信
2017/01/21 Javascript
详解Vue-Cli 异步加载数据的一些注意点
2017/08/12 Javascript
PHP自动加载autoload和命名空间的应用小结
2017/12/01 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
利用django-suit模板添加自定义的菜单、页面及设置访问权限
2018/07/13 Python
python中使用zip函数出现错误的原因
2018/09/28 Python
用Python画一个LinkinPark的logo代码实例
2019/09/10 Python
Python实现代码统计工具
2019/09/19 Python
PyCharm2019安装教程及其使用(图文教程)
2019/09/29 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
Pycharm2020最新激活码|永久激活(附最新激活码和插件的详细教程)
2020/09/29 Python
python opencv肤色检测的实现示例
2020/12/21 Python
纯CSS3实现图片无间断轮播效果
2016/08/25 HTML / CSS
纯CSS3实现地球自转实现代码(图文教程附送源码)
2012/12/26 HTML / CSS
UNIONBAY官网:美国青少年服装品牌
2019/03/26 全球购物
教师现实表现材料
2014/02/14 职场文书
生产车间主任岗位职责
2015/04/08 职场文书
设备技术员岗位职责
2015/04/11 职场文书
工作年限证明范本
2015/06/15 职场文书
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
2021/04/05 Python
总结Python变量的相关知识
2021/06/28 Python
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript