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-fpm 参数的深入理解
Jun 03 PHP
PHP中mb_convert_encoding与iconv函数的深入解析
Jun 21 PHP
PHP中array_slice函数用法实例详解
Nov 25 PHP
php简单定时执行任务的实现方法
Feb 23 PHP
Codeigniter的dom类用法实例
Jun 26 PHP
详解php中空字符串和0之间的关系
Oct 23 PHP
数组任意位置插入元素,删除特定元素的实例
Mar 02 PHP
php基于数组函数实现关联表的编辑操作示例
Jul 04 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
php实现微信公众平台发红包功能
Jun 14 PHP
基于laravel-admin 后台 列表标签背景的使用方法
Oct 03 PHP
Nginx+php配置文件及原理解析
Dec 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
百事可乐也出咖啡了 双倍咖啡因双倍快乐
2021/03/03 咖啡文化
AJAX for PHP简单表数据查询实例
2007/01/02 PHP
PHP写UltraEdit插件脚本实现方法
2011/12/26 PHP
PHP全功能无变形图片裁剪操作类与用法示例
2017/01/10 PHP
PHP封装的验证码工具类定义与用法示例
2018/08/22 PHP
PHP的JSON封装、转变及输出操作示例
2019/09/27 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
自适应高度框架 ----属个人收藏内容
2007/01/22 Javascript
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
Jquery Uploadify多文件上传带进度条且传递自己的参数
2013/08/28 Javascript
js传参数受特殊字符影响错误的解决方法
2013/10/21 Javascript
JS简单实现登陆验证附效果图
2013/11/19 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
jQuery结合CSS制作漂亮的select下拉菜单
2015/05/03 Javascript
深入理解javascript作用域第二篇之词法作用域和动态作用域
2016/07/24 Javascript
bootstrap timepicker在angular中取值并转化为时间戳
2017/06/13 Javascript
JavaScript偏函数与柯里化实例详解
2019/03/27 Javascript
VUE的history模式下除了index外其他路由404报错解决办法
2019/08/21 Javascript
JS数组方法reverse()用法实例分析
2020/01/18 Javascript
JavaScript如何使用插值实现图像渐变
2020/06/28 Javascript
[05:40]DOTA2荣耀之路6:Wings最后进攻
2018/05/30 DOTA
Python函数中定义参数的四种方式
2014/11/30 Python
python追加元素到列表的方法
2015/07/28 Python
Python 中开发pattern的string模板(template) 实例详解
2017/04/01 Python
python+Splinter实现12306抢票功能
2018/09/25 Python
python 提取tuple类型值中json格式的key值方法
2018/12/31 Python
20行python代码实现人脸识别
2019/05/05 Python
OpenCV 边缘检测
2019/07/10 Python
AVIS安飞士奥地利租车官网:提供奥地利、欧洲和全世界汽车租赁
2016/11/29 全球购物
教育科研先进个人材料
2014/01/26 职场文书
五一活动标语
2014/06/30 职场文书
地道战观后感
2015/06/04 职场文书
技能培训通讯稿
2015/07/18 职场文书
导游词之介休绵山
2019/12/31 职场文书
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫