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 防止单引号,双引号在接受页面转义
Jul 10 PHP
PHPCMS的使用小结
Sep 20 PHP
给初学者的30条PHP最佳实践(荒野无灯)
Aug 02 PHP
php中3种方法统计字符串中每种字符的个数并排序
Aug 27 PHP
php第一次无法获取cookie问题处理
Dec 15 PHP
php通过rmdir删除目录的简单用法
Mar 18 PHP
codeigniter中实现一次性加载多个view的方法
Mar 20 PHP
PHP中curl_setopt函数用法实例分析
Apr 16 PHP
php htmlentities()函数的定义和用法
May 13 PHP
分析PHP中单双引号的误区和双引号小隐患
Jul 19 PHP
利用php抓取蜘蛛爬虫痕迹的示例代码
Sep 30 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
Aug 17 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
文章推荐系统(二)
2006/10/09 PHP
php日期转时间戳,指定日期转换成时间戳
2012/07/17 PHP
PHP生成器简单实例
2015/05/13 PHP
php实现生成验证码实例分享
2016/04/10 PHP
php过滤htmlspecialchars() 函数实现把预定义的字符转换为 HTML 实体用法分析
2019/06/25 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
2019/12/30 PHP
Javascript 陷阱 window全局对象
2008/11/26 Javascript
Javascript 通过json自动生成Dom的代码
2010/04/01 Javascript
如何使用jQUery获取选中radio对应的值(一句代码)
2013/06/03 Javascript
Bootstrap Modal遮罩弹出层(完整版)
2016/11/21 Javascript
将Sublime Text 3 添加到右键中的简单方法
2017/12/12 Javascript
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
如何在项目中使用log4.js的方法步骤
2019/07/16 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
2020/06/29 Javascript
vue 动态生成拓扑图的示例
2021/01/03 Vue.js
用TensorFlow实现lasso回归和岭回归算法的示例
2018/05/02 Python
python使用turtle库与random库绘制雪花
2018/06/22 Python
Python格式化日期时间操作示例
2018/06/28 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
详解Python对JSON中的特殊类型进行Encoder
2019/07/15 Python
Python字典中的值为列表或字典的构造实例
2019/12/16 Python
Python selenium 自动化脚本打包成一个exe文件(推荐)
2020/01/14 Python
python百行代码自制电脑端网速悬浮窗的实现
2020/05/12 Python
Python基于内置函数type创建新类型
2020/10/22 Python
python unichr函数知识点总结
2020/12/16 Python
python中altair可视化库实例用法
2021/01/26 Python
酒吧副总经理岗位职责
2013/12/10 职场文书
幼儿园教师备课制度
2014/01/12 职场文书
党员入党表决心的话
2014/03/11 职场文书
法律六进活动方案
2014/03/13 职场文书
工作会议主持词
2014/03/17 职场文书
研究生求职自荐书
2014/06/23 职场文书
2014年材料员工作总结
2014/11/19 职场文书