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 相关文章推荐
第十节--抽象方法和抽象类
Nov 16 PHP
PHP 命令行参数详解及应用
May 18 PHP
php正则表达匹配中文问题分析小结
Mar 25 PHP
eAccelerator的安装与使用详解
Jun 13 PHP
php的zip解压缩类pclzip使用示例
Mar 14 PHP
PHP实现手机号码中间四位用星号(*)隐藏的自定义函数分享
Sep 27 PHP
php中base_convert()进制数字转换函数实例
Nov 20 PHP
PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
Apr 07 PHP
Laravel5权限管理方法详解
Jul 26 PHP
PHP中的多种加密技术及代码示例解析
Oct 20 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
Feb 20 PHP
php和C#的yield迭代器实现方法对比分析
Jul 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
PHP数据库操作面向对象的优点
2006/10/09 PHP
PHP中遇到的时区问题解决方法
2015/07/23 PHP
php打乱数组二维数组多维数组的简单实例
2016/06/17 PHP
thinkPHP中配置的读取与C方法详解
2016/12/05 PHP
js身份证验证超强脚本
2008/10/26 Javascript
基于JQuery的密码强度验证代码
2010/03/01 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
2014/12/03 Javascript
浅谈JavaScript超时调用和间歇调用
2015/08/30 Javascript
15个值得开发人员关注的jQuery开发技巧和心得总结【经典收藏】
2016/05/25 Javascript
jQuery ajax方法传递中文时出现中文乱码的解决方法
2016/07/25 Javascript
javascript实现瀑布流动态加载图片原理
2016/08/12 Javascript
jQuery获取select选中的option的value值实现方法
2016/08/29 Javascript
原生JavaScript实现Tooltip浮动提示框特效
2017/03/07 Javascript
基于Vue实现支持按周切换的日历
2020/09/24 Javascript
原生JS实现 MUI导航栏透明渐变效果
2017/11/07 Javascript
element-ui 时间选择器限制范围的实现(随动)
2019/01/09 Javascript
H5实现手机拍照和选择上传功能
2019/12/18 Javascript
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
2014/11/06 Python
Python运用于数据分析的简单教程
2015/03/27 Python
Python爬虫利用cookie实现模拟登陆实例详解
2017/01/12 Python
python3.6使用pymysql连接Mysql数据库
2018/05/25 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
flask-restful使用总结
2018/12/04 Python
python实现简单五子棋游戏
2019/06/18 Python
python中使用while循环的实例
2019/08/05 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
2019/08/09 Python
基于python实现模拟数据结构模型
2020/06/12 Python
浅谈CSS3特性查询(Feature Query: @supports)功能简介
2017/07/31 HTML / CSS
HTML5 拖放功能实现代码
2016/07/14 HTML / CSS
小学毕业感言50字
2014/02/16 职场文书
优秀应届本科生求职信
2014/07/19 职场文书
建议书格式
2015/02/04 职场文书
2015年教师业务工作总结
2015/05/26 职场文书
大学运动会通讯稿
2015/07/18 职场文书
古诗文之爱国名句(77句)
2019/09/24 职场文书
Go语言应该什么情况使用指针
2021/07/25 Golang