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+mysql写的留言本
Oct 09 PHP
PHP4和PHP5性能测试和对比 测试代码与环境
Aug 17 PHP
php文件怎么打开 如何执行php文件
Dec 21 PHP
win7下memCache的安装过程(具体操作步骤)
Jun 28 PHP
如何在Ubuntu下启动Apache的Rewrite功能
Jul 05 PHP
ini_set的用法介绍
Jan 07 PHP
PHP文件大小格式化函数合集
Mar 10 PHP
PHP实现AES256加密算法实例
Sep 22 PHP
PHP获取访问页面HTTP状态码的实现代码
Nov 03 PHP
PHP中echo与print区别点整理
Mar 09 PHP
ThinkPHP5和ThinkPHP6的区别
Mar 31 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
php加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
全面了解PHP中的全局变量
2016/06/17 PHP
PHP树形结构tree类用法示例
2019/02/01 PHP
laravel批量生成假数据的方法
2019/10/09 PHP
javascript 去字符串空格终极版(支持utf8)
2009/11/14 Javascript
cnblogs TagCloud基于jquery的实现代码
2010/06/11 Javascript
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
Javascript实现动态菜单添加的实例代码
2013/07/05 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
2014/01/31 Javascript
JavaScript中遍历对象的property的3种方法介绍
2014/12/30 Javascript
jquery+html5烂漫爱心表白动画代码分享
2015/08/24 Javascript
实战node静态文件服务器的示例代码
2018/03/08 Javascript
通过图带你深入了解vue的响应式原理
2019/06/21 Javascript
elementui之el-tebs浏览器卡死的问题和使用报错未注册问题
2019/07/06 Javascript
[06:44]2018DOTA2亚洲邀请赛4.5 SOLO赛 MidOne vs Sumail
2018/04/06 DOTA
[01:14:55]EG vs Spirit Supermajor 败者组 BO3 第三场 6.4
2018/06/05 DOTA
在Python中操作文件之seek()方法的使用教程
2015/05/24 Python
Python内置数据结构与操作符的练习题集锦
2016/07/01 Python
python 网络编程常用代码段
2016/08/28 Python
Python实现的文轩网爬虫完整示例
2019/05/16 Python
Django框架自定义session处理操作示例
2019/05/27 Python
如何基于Python批量下载音乐
2019/11/11 Python
使用Pyhton 分析酒店针孔摄像头
2020/03/04 Python
HTML5 embed标签定义和用法详解
2014/05/09 HTML / CSS
加拿大当代时尚服饰、配饰和鞋类专业零售商和制造商:LE CHÂTEAU
2017/10/06 全球购物
新西兰床上用品和家居用品购物网站:Adairs
2018/04/27 全球购物
班组长的岗位职责
2013/12/09 职场文书
残疾人创业典型事迹
2014/02/01 职场文书
2014年消防工作实施方案
2014/02/20 职场文书
幼儿园课题方案
2014/06/09 职场文书
授权委托书样本
2014/09/25 职场文书
2014年保洁工作总结
2014/11/24 职场文书
硕士学位论文评语
2014/12/31 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
Redis三种集群模式详解
2021/10/05 Redis
JavaScript 反射学习技巧
2021/10/16 Javascript