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 相关文章推荐
PHP新手上路(十)
Oct 09 PHP
利用PHP制作简单的内容采集器的代码
Nov 28 PHP
解决了Ajax、MySQL 和 Zend Framework 的乱码问题
Mar 03 PHP
劣质的PHP代码简化
Feb 08 PHP
PHP 第二节 数据类型之数组
Apr 28 PHP
php递归函数中使用return的注意事项
Jan 17 PHP
php日历制作代码分享
Jan 20 PHP
PHP 利用Mail_MimeDecode类提取邮件信息示例
Jan 26 PHP
php数组去除空值函数分享
Feb 02 PHP
深入理解PHP中的Streams工具
Jul 03 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
Sep 17 PHP
PHP7 错误处理机制修改
Mar 09 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的MVC开发机制实例解析
2014/08/23 PHP
使用PHP免费发送定时短信的实例
2016/10/24 PHP
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
editable.js 基于jquery的表格的编辑插件
2011/10/24 Javascript
jquery异步跨域访问代码
2013/06/28 Javascript
jquery 检测元素是否存在的实例代码
2013/11/19 Javascript
jquery删除ID为sNews的tr元素的内容
2014/04/10 Javascript
JS运动相关知识点小结(附弹性运动示例)
2016/01/08 Javascript
Angularjs自定义指令Directive详解
2017/05/27 Javascript
微信小程序 密码输入(源码下载)
2017/06/27 Javascript
javascript 跨域问题以及解决办法
2017/07/17 Javascript
vue页面使用阿里oss上传功能的实例(一)
2017/08/09 Javascript
BootStrap中Table隐藏后显示问题的实现代码
2017/08/31 Javascript
浅析vue中常见循环遍历指令的使用 v-for
2018/04/18 Javascript
基于React Native 0.52实现轮播图效果
2020/08/25 Javascript
jQuery实现获取当前鼠标位置并输出功能示例
2019/01/05 jQuery
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
使用react context 实现vue插槽slot功能
2019/07/18 Javascript
[39:00]Optic vs VP 2018国际邀请赛淘汰赛BO3 第三场 8.24
2018/08/25 DOTA
Python的subprocess模块总结
2014/11/07 Python
Python命令启动Web服务器实例详解
2017/02/23 Python
Python列表生成式与生成器操作示例
2018/08/01 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
对Python _取log的几种方式小结
2019/07/25 Python
pygame实现飞机大战
2020/03/11 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
2020/10/29 Python
html5利用canvas绘画二级树形结构图的示例
2017/09/27 HTML / CSS
印尼购物网站:iLOTTE
2019/10/16 全球购物
毕业生动漫设计求职信
2013/10/11 职场文书
打造完美自荐信
2014/01/24 职场文书
社区敬老月活动实施方案
2014/02/17 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
个人收入证明范本
2015/06/12 职场文书
法律服务所工作总结
2015/08/10 职场文书
丧事答谢词大全
2015/09/30 职场文书
2016猴年春节问候语
2015/11/11 职场文书