PHP自定义序列化接口Serializable用法分析


Posted in PHP onDecember 29, 2017

本文实例讲述了PHP自定义序列化接口Serializable用法。分享给大家供大家参考,具体如下:

PHP Serializable是自定义序列化的接口实现此接口的类将不再支持__sleep()和__wakeup(),当类的实例被序列化时将自动调用serialize方法,并且不会调用 __destruct()或有其他影响。当类的实例被反序列化时,将调用unserialize()方法,并且不执行__construct()。接口摘要如下:

Serializable {
  abstract public string serialize ( void )
  abstract public mixed unserialize ( string $serialized )
}

例子说明:

<?php
/**
 * 类自定义序列化相关操作
 *
 * @author 疯狂老司机
 */
class obj implements Serializable {
  private $data;
  private $step = 0;
  /*
   * 构造函数
   */
  public function __construct() {
    $this->data = "这是一段测试文字<br>";
    echo '调用构造函数<br>';
  }
  public function serialize() {
    return serialize($this->data);
  }
  public function unserialize($data) {
    $this->step++;
    $this->data = unserialize($data);
  }
  /*
   * 析构函数
   */
  public function __destruct() {
    echo 'step:'.$this->step.' 调用析构函数<br>';
  }
  public function getData(){
    return $this->data;
  }
}
$obj = new obj;// 调用obj::__construct
$ser = serialize($obj);// 调用obj::serialize
$newobj = unserialize($ser);// 调用obj::unserialize
echo $newobj->getData();// 调用obj::getData
// 执行结束,调用析构函数,先执行newobj对象的析构函数在执行obj对象的析构函数
?>

以上例子输出:

调用构造函数
这是一段测试文字
step:1 调用析构函数
step:0 调用析构函数

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
使用sockets:从新闻组中获取文章(一)
Oct 09 PHP
一个可以删除字符串中HTML标记的PHP函数
Oct 09 PHP
PHP Document 代码注释规范
Apr 13 PHP
php skymvc 一款轻量、简单的php
Jun 28 PHP
使用PHP求两个文件的相对路径
Jun 20 PHP
PHP与MYSQL中UTF8编码的中文排序实例
Oct 21 PHP
分享一个Laravel好用的Cache宏
Mar 02 PHP
php数字运算验证码的实现代码
Jul 30 PHP
PHP中的函数声明与使用详解
May 27 PHP
Laravel中encrypt和decrypt的实现方法
Sep 24 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
May 08 PHP
php7 错误处理机制修改实例分析
May 25 PHP
PHP检测接口Traversable用法详解
Dec 29 #PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
Dec 28 #PHP
PHP迭代器接口Iterator用法分析
Dec 28 #PHP
PHP数组式访问接口ArrayAccess用法分析
Dec 28 #PHP
PHP获取数组中指定的一列实例
Dec 27 #PHP
快速解决PHP调用Word组件DCOM权限的问题
Dec 27 #PHP
详解Yaf框架PHPUnit集成测试方法
Dec 27 #PHP
You might like
Thinkphp实现MySQL读写分离操作示例
2014/06/25 PHP
Laravel 5.0 发布 新版本特性详解
2015/02/10 PHP
PHP的几个常用加密函数
2016/02/03 PHP
Yii2中OAuth扩展及QQ互联登录实现方法
2016/05/16 PHP
PHP的Json中文处理解决方案
2016/09/29 PHP
javascript与有限状态机详解
2014/05/08 Javascript
浅谈JavaScript的事件
2015/02/27 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
实例讲解jquery中mouseleave和mouseout的区别
2016/02/17 Javascript
微信公众号 客服接口的开发实例详解
2016/09/28 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
2016/11/21 Javascript
微信小程序链接传参并跳转新页面
2016/11/29 Javascript
js通过keyCode值判断单击键盘上某个键,然后触发指定的事件方法
2017/02/19 Javascript
Vue中父组件向子组件通信的方法
2017/07/11 Javascript
jQuery Dom元素操作技巧
2018/02/04 jQuery
在vue中,v-for的索引index在html中的使用方法
2018/03/06 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
Vue.js组件高级特性实例详解
2018/12/24 Javascript
nodeJS进程管理器pm2的使用
2019/01/09 NodeJs
JavaScript私有变量实例详解
2019/01/24 Javascript
微信小程序学习笔记之本地数据缓存功能详解
2019/03/29 Javascript
vue ajax 拦截原理与实现方法示例
2019/11/29 Javascript
js模拟实现百度搜索
2020/06/28 Javascript
JavaScript实现网页跨年倒计时
2020/12/02 Javascript
[36:45]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中time模块与datetime模块在使用中的不同之处
2015/11/24 Python
Python面向对象之继承代码详解
2018/01/29 Python
Python requests库用法实例详解
2018/08/14 Python
python实现二维数组的对角线遍历
2019/03/02 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
2019/09/24 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
css3 border旋转时的动画应用
2016/01/22 HTML / CSS
Perfumetrader荷兰:香水、化妆品和护肤品在线商店
2017/09/15 全球购物
Nordgreen英国官网:斯堪的纳维亚设计师手表
2018/10/24 全球购物
医学生自我鉴定范文
2014/03/26 职场文书
个人批评与自我批评发言稿
2014/09/28 职场文书