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设计模式 Chain Of Responsibility (职责链模式)
Jun 26 PHP
php中is_null,empty,isset,unset 的区别详细介绍
Apr 28 PHP
深入php define()函数以及defined()函数的用法详解
Jun 05 PHP
php读取本地文件常用函数(fopen与file_get_contents)
Sep 09 PHP
phpExcel中文帮助手册之常用功能指南
Aug 18 PHP
php实现的发送带附件邮件类实例
Sep 22 PHP
PHP检测数据类型的几种方法(总结)
Mar 04 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
May 29 PHP
PHP中TP5 上传文件的实例详解
Jul 31 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
Apr 20 PHP
总结PHP代码规范、流程规范、git规范
Jun 18 PHP
php+mysql实现的无限分类方法类定义与使用示例
May 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
基于php缓存的详解
2013/05/15 PHP
探讨php中防止SQL注入最好的方法是什么
2013/06/10 PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
2014/07/28 PHP
PHP中的流(streams)浅析
2015/07/02 PHP
php实现购物车功能(下)
2016/01/05 PHP
浅谈PHP接入(第三方登录)QQ登录 OAuth2.0 过程中遇到的坑
2017/10/13 PHP
ThinkPHP5.0 图片上传生成缩略图实例代码说明
2018/06/20 PHP
PHP关于foreach复制知识点总结
2019/01/28 PHP
Thinkphp5框架异常处理操作实例分析
2020/06/03 PHP
jQuery Ajax文件上传(php)
2009/06/16 Javascript
实现连缀调用的map方法(prototype)
2009/08/05 Javascript
IE 下的只读 innerHTML
2009/08/21 Javascript
javascript中的this详解
2014/12/08 Javascript
JS长整型精度问题实例分析
2015/01/13 Javascript
JavaScript中的some()方法使用详解
2015/06/09 Javascript
解析NodeJs的调试方法
2016/12/11 NodeJs
js统计页面上每个标签的数量实例代码
2018/05/29 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
2018/10/29 Javascript
jQuery+ThinkPHP实现图片上传
2020/07/23 jQuery
Nuxt.js nuxt-link与router-link的区别说明
2020/11/06 Javascript
[10:07]2014DOTA2国际邀请赛 实拍选手现场观战DK对阵Titan
2014/07/12 DOTA
[06:44]2014DOTA2国际邀请赛-钥匙体育馆开战 开幕式振奋人心
2014/07/19 DOTA
详解python脚本自动生成需要文件实例代码
2017/02/04 Python
Python编程之列表操作实例详解【创建、使用、更新、删除】
2017/07/22 Python
python中时间转换datetime和pd.to_datetime详析
2019/08/11 Python
python函数超时自动退出的实操方法
2020/12/28 Python
意大利婴儿产品网上商店:Mukako
2018/10/14 全球购物
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
美国价格实惠的在线眼镜网站:Zeelool
2020/12/25 全球购物
房屋财产继承协议书范本
2014/11/03 职场文书
2014年青年教师工作总结
2014/12/17 职场文书
《失物招领》教学反思
2016/02/20 职场文书
如何使用JavaScript策略模式校验表单
2021/04/29 Javascript
Golang 结构体数据集合
2022/04/22 Golang
vue postcss-px2rem 自适应布局
2022/05/15 Vue.js
Linux下搭建SFTP服务器的命令详解
2022/06/25 Servers