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 相关文章推荐
探讨:web上存漏洞及原理分析、防范方法
Jun 29 PHP
PHP修改session_id示例代码
Jan 08 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
May 29 PHP
ThinkPHP模板比较标签用法详解
Jun 30 PHP
php中rename函数用法分析
Nov 15 PHP
ThinkPHP函数详解之M方法和R方法
Sep 10 PHP
Zend Framework教程之模型Model用法简单实例
Mar 04 PHP
深入理解PHP中的empty和isset函数
May 26 PHP
php基于单例模式封装mysql类完整实例
Oct 18 PHP
PHP实现的同步推荐操作API接口案例分析
Nov 30 PHP
laravel框架关于搜索功能的实现
Mar 15 PHP
PHP设计模式之装饰器模式定义与用法简单示例
Aug 13 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
Zend Framework教程之动作的基类Zend_Controller_Action详解
2016/03/07 PHP
php 实现一个字符串加密解密的函数实例代码
2016/11/01 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
php进行md5加密简单实例方法
2019/09/19 PHP
通过js脚本复制网页上的一个表格的不错实现方法
2006/12/29 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
js实现日期级联效果
2014/01/23 Javascript
JS仿京东移动端手指拨动切换轮播图效果
2020/04/10 Javascript
vue引入新版 vue-awesome-swiper插件填坑问题
2018/01/25 Javascript
浅谈手写node可读流之流动模式
2018/06/01 Javascript
vue中vee validate表单校验的几种基本使用
2018/06/25 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
2019/04/25 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
vue-cli在 history模式下的配置详解
2019/11/26 Javascript
[01:04]DOTA2:伟大的Roshan雕塑震撼来临
2015/01/30 DOTA
Python GAE、Django导出Excel的方法
2008/11/24 Python
Python AES加密模块用法分析
2017/05/22 Python
Python实现单词翻译功能
2017/06/06 Python
pandas.DataFrame.to_json按行转json的方法
2018/06/05 Python
Python+OpenCV实现图像融合的原理及代码
2018/12/03 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
2019/05/10 Python
python使用sessions模拟登录淘宝的方式
2019/08/16 Python
在python Numpy中求向量和矩阵的范数实例
2019/08/26 Python
分享PyCharm的几个使用技巧
2019/11/10 Python
Python matplotlib实时画图案例
2020/04/23 Python
利用纯CSS3实现动态的自行车特效源码
2017/01/20 HTML / CSS
详解HTML5 canvas绘图基本使用方法
2018/01/29 HTML / CSS
《穷人》教学反思
2014/04/08 职场文书
我的画教学反思
2014/04/28 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书
优秀小学生事迹材料
2014/12/26 职场文书
残联2016年全国助残日活动总结
2016/04/01 职场文书
MySQL8.0无法启动3534的解决方法
2021/06/03 MySQL
不负正版帝国之名 《重返帝国》引领SLG手游制作新的标杆
2022/04/07 其他游戏
Ruby GDBM操作简介及数据存储原理
2022/04/19 Ruby
使用Cargo工具高效创建Rust项目
2022/08/14 Javascript