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 相关文章推荐
PHP5.0对象模型探索之抽象方法和抽象类
Sep 05 PHP
php日历[测试通过]
Mar 27 PHP
php 自写函数代码 获取关键字 去超链接
Feb 08 PHP
PHP 缓存实现代码及详细注释
May 16 PHP
兼容性比较好的PHP生成缩略图的代码
Jan 12 PHP
ThinkPHP的I方法使用详解
Jun 18 PHP
PHP弹出对话框技巧详细解读
Sep 26 PHP
thinkphp如何获取客户端IP
Nov 03 PHP
在openSUSE42.1下编译安装PHP7 的方法
Dec 24 PHP
CI框架集成Smarty的方法分析
May 17 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 04 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简单静态页生成过程
2008/03/27 PHP
php 生成短网址原理及代码
2014/01/23 PHP
PHP中strlen()和mb_strlen()的区别浅析
2014/06/19 PHP
php+js实现的无刷新下载文件功能示例
2019/08/23 PHP
php-7.3.6 编译安装过程
2020/02/11 PHP
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
2010/01/05 Javascript
JavaScript中的类继承
2010/11/25 Javascript
JavaScript高级程序设计 客户端存储学习笔记
2011/09/10 Javascript
JS延迟加载加快页面打开速度示例代码
2013/12/30 Javascript
学习javascript面向对象 掌握创建对象的9种方式
2016/01/04 Javascript
简述jQuery ajax的执行顺序
2016/01/05 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
文本框只能输入数字的js代码(含小数点)
2016/07/10 Javascript
Angular.js实现注册系统的实例详解
2016/12/18 Javascript
从零开始学习Node.js系列教程之设置HTTP头的方法示例
2017/04/13 Javascript
layui前段框架日期控件使用方法详解
2017/05/19 Javascript
前端路由&webpack基础配置详解
2019/06/10 Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
2019/11/05 Javascript
vue导入.md文件的步骤(markdown转HTML)
2020/12/31 Vue.js
python动态加载变量示例分享
2014/02/17 Python
深入讲解Python函数中参数的使用及默认参数的陷阱
2016/03/13 Python
Python做文本按行去重的实现方法
2016/10/19 Python
Python中shape计算矩阵的方法示例
2017/04/21 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
python原类、类的创建过程与方法详解
2019/07/19 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
通过Turtle库在Python中绘制一个鼠年福鼠
2020/02/03 Python
python pymysql链接数据库查询结果转为Dataframe实例
2020/06/05 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
Booking.com英国官网:全球酒店在线预订网站
2018/04/21 全球购物
英国最受欢迎的在线隐形眼镜商店:VisionDirect.co.uk
2018/12/06 全球购物
闭幕词的写作格式与范文!
2019/06/24 职场文书
Python基础之Socket通信原理
2021/04/22 Python
python基于tkinter实现gif录屏功能
2021/05/19 Python
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS