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 相关文章推荐
在任意字符集下正常显示网页的方法一
Apr 01 PHP
php google或baidu分页代码
Nov 26 PHP
MySQL时间字段究竟使用INT还是DateTime的说明
Feb 27 PHP
基于PHP一些十分严重的缺陷详解
Jun 03 PHP
PHP迭代器的内部执行过程详解
Nov 12 PHP
php简单计算页面加载时间的方法
Jun 19 PHP
PHP基于工厂模式实现的计算器实例
Jul 16 PHP
PHP的Yii框架的基本使用示例
Aug 21 PHP
ThinkPHP2.x防范XSS跨站攻击的方法
Sep 25 PHP
支付宝服务窗API接口开发php版本
Jul 20 PHP
PHP中Notice错误常见解决方法
Apr 28 PHP
PHP实现的观察者模式实例
Jun 21 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
推荐几部必看的DC动画电影
2020/03/03 欧美动漫
将兴奋、喜悦和坎加斯带到戴安娜:亚马逊公主
2020/03/03 欧美动漫
PHP简洁函数(PHP简单明了函数语法)
2012/06/10 PHP
php与java通过socket通信的实现代码
2013/10/21 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
WordPress 照片lightbox效果的运用几点
2009/06/22 Javascript
通过Javascript创建一个选择文件的对话框代码
2012/06/16 Javascript
Google (Local) Search API的简单使用介绍
2013/11/28 Javascript
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
理解Javascript图片预加载
2016/02/23 Javascript
基于JS实现省市联动效果代码分享
2016/06/06 Javascript
JS中判断null的方法分析
2016/11/21 Javascript
angular.js 路由及页面传参示例
2017/02/24 Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
2017/03/13 Javascript
nodejs对express中next函数的一些理解
2017/09/08 NodeJs
JS判断浏览器类型与操作系统的方法分析
2020/04/30 Javascript
python多线程扫描端口示例
2014/01/16 Python
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
Python+tkinter使用80行代码实现一个计算器实例
2018/01/16 Python
Python对接 xray 和微信实现自动告警
2019/09/17 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
2019/10/11 Python
Python自动化测试基础必备知识点总结
2021/02/07 Python
LG西班牙网上商店:Tienda LG Online Es
2019/07/30 全球购物
解释i节点在文件系统中的作用
2013/11/26 面试题
历史系毕业生自荐信
2013/10/28 职场文书
测绘工程专业个人自我评价
2013/12/01 职场文书
求职信模板怎么做
2014/01/26 职场文书
大二法学专业职业生涯规划范文
2014/02/12 职场文书
科级干部考察材料
2014/02/15 职场文书
成绩报告单家长评语
2014/12/30 职场文书
2015年学雷锋活动总结
2015/02/06 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers
python超详细实现完整学生成绩管理系统
2022/03/17 Python
Golang解析JSON对象
2022/04/30 Golang