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文本数据库的搜索方法
Oct 09 PHP
php简单封装了一些常用JS操作
Feb 25 PHP
PHP生成HTML静态页面实例代码
Aug 31 PHP
php+javascript的日历控件
Nov 19 PHP
那些年一起学习的PHP(三)
Mar 22 PHP
PHP的加密方式及原理
Jun 14 PHP
php的一个简单加密解密代码
Jan 14 PHP
php中curl使用指南
Feb 05 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
Jan 07 PHP
php基于 swoole 实现的异步处理任务功能示例
Aug 13 PHP
详解Laravel服务容器的绑定与解析
Nov 05 PHP
TP5框架实现上传多张图片的方法分析
Mar 29 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开发大型项目的一点经验
2006/10/09 PHP
session 的生命周期是多长
2006/10/09 PHP
基于PHP Web开发MVC框架的Smarty使用说明
2013/04/19 PHP
PHP中spl_autoload_register()和__autoload()区别分析
2014/05/10 PHP
php动态变量定义及使用
2015/06/10 PHP
[原创]php实现 data url的图片生成与保存
2016/12/04 PHP
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
js onclick事件传参讲解
2013/11/06 Javascript
js实现input框文字动态变换显示效果
2015/08/19 Javascript
JS+CSS实现带小三角指引的滑动门效果
2015/09/22 Javascript
基于BootStarp的Dailog
2016/04/28 Javascript
canvas实现粒子时钟效果
2017/02/06 Javascript
AngularJS实现动态添加Option的方法
2017/05/17 Javascript
react-router4 嵌套路由的使用方法
2017/07/24 Javascript
element ui里dialog关闭后清除验证条件方法
2018/02/26 Javascript
Python内置函数dir详解
2015/04/14 Python
对python中的for循环和range内置函数详解
2018/04/17 Python
Python 从一个文件中调用另一个文件的类方法
2019/01/10 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
numpy concatenate数组拼接方法示例介绍
2019/05/27 Python
Django 响应数据response的返回源码详解
2019/08/06 Python
使用Python实现图像标记点的坐标输出功能
2019/08/14 Python
Python 调用 Windows API COM 新法
2019/08/22 Python
tensorflow之并行读入数据详解
2020/02/05 Python
python sorted函数原理解析及练习
2020/02/10 Python
python字符串下标与切片及使用方法
2020/02/13 Python
css3实现input输入框颜色渐变发光效果代码
2014/04/02 HTML / CSS
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
来自全球大都市的高级街头服饰:Pegador
2018/01/03 全球购物
网络维护中文求职信
2014/01/03 职场文书
离婚协议书范本(2014版)
2014/09/28 职场文书
个人借款协议书范本
2014/11/17 职场文书
2019年个人工作总结范文
2019/03/25 职场文书
2019森林防火宣传标语大全!
2019/07/03 职场文书
iPhone13将有八大升级
2021/04/15 数码科技
html用代码制作虚线框怎么做? dw制作虚线圆圈的技巧
2022/12/24 HTML / CSS