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在XP下IIS和Apache2服务器上的安装
Sep 05 PHP
一棵php的类树(支持无限分类)
Oct 09 PHP
一个PHP操作Access类(PHP+ODBC+Access)
Jan 02 PHP
国外十大最流行的PHP框架排名
Jul 04 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
Sep 28 PHP
PHP实现的蚂蚁爬杆路径算法代码
Dec 03 PHP
yii分页组件用法实例分析
Dec 28 PHP
PHP的Yii框架中View视图的使用进阶
Mar 29 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
Apr 20 PHP
ThinkPHP5框架实现简单的批量查询功能示例
Jun 07 PHP
php基于 swoole 实现的异步处理任务功能示例
Aug 13 PHP
Thinkphp5.0框架视图view的模板布局用法分析
Oct 12 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 Header用于页面跳转要注意的几个问题总结
2008/10/03 PHP
腾讯QQ php程序员面试题目整理
2010/06/08 PHP
php的urlencode()URL编码函数浅析
2011/08/09 PHP
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
php随机取mysql记录方法小结
2014/12/27 PHP
php cookie用户登录的详解及实例代码
2017/01/03 PHP
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
10个实用的脚本代码工具
2010/05/04 Javascript
javascript学习笔记(四) Number 数字类型
2012/06/19 Javascript
JavaScript实现班级随机点名小应用需求的具体分析
2014/05/12 Javascript
JavaScript实现找出字符串中第一个不重复的字符
2014/09/03 Javascript
浅谈javascript 函数属性和方法
2015/01/21 Javascript
JavaScript节点及列表操作实例小结
2015/08/05 Javascript
bootstrap datetimepicker2.3.11时间插件使用
2016/11/19 Javascript
Bootstrap3 模态框使用实例
2017/02/22 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
Vue.js组件使用props传递数据的方法
2019/10/19 Javascript
vue+vant使用图片预览功能ImagePreview的问题解决
2020/04/10 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
Vue+Java+Base64实现条码解析的示例
2020/09/23 Javascript
python批量修改文件后缀示例代码分享
2013/12/24 Python
python计算圆周率pi的方法
2015/07/11 Python
Python判断某个用户对某个文件的权限
2016/10/13 Python
python 对象真假值的实例(哪些视为False)
2020/12/11 Python
python中pickle模块浅析
2020/12/29 Python
Europcar意大利:汽车租赁
2019/07/07 全球购物
Linux如何压缩可执行文件
2013/10/21 面试题
Java面试题:请说出如下代码的输出结果
2013/04/22 面试题
给排水专业应届生求职信
2013/10/12 职场文书
销售工作岗位职责
2013/12/24 职场文书
计算机数据库专业职业生涯规划书
2014/02/08 职场文书
2015年秋季开学典礼校长致辞
2015/07/16 职场文书
《小摄影师》教学反思
2016/02/18 职场文书
检讨书格式
2019/04/25 职场文书
Golang 实现WebSockets
2022/04/24 Golang