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的历史和优缺点
Oct 09 PHP
PHP4在Windows2000下的安装
Oct 09 PHP
php学习之 认清变量的作用范围
Jan 26 PHP
PHP中基本符号及使用方法
Mar 23 PHP
PHP 可阅读随机字符串代码
May 26 PHP
php去除重复字的实现代码
Sep 16 PHP
php用header函数实现301跳转代码实例
Nov 25 PHP
php+mysqli使用面向对象方式查询数据库实例
Jan 29 PHP
详解PHP防止盗链防止迅雷下载的方法
Apr 26 PHP
php 中的closure用法详解
Jun 12 PHP
Laravel框架模板继承操作示例
Jun 11 PHP
PHP中单例模式的使用场景与使用方法讲解
Mar 18 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学习之正则表达式
2011/04/17 PHP
php fsockopen伪造post与get方法的详解
2013/06/14 PHP
深入extjs与php参数交互的详解
2013/06/25 PHP
解析PHP中的内存管理,PHP动态分配和释放内存
2013/06/28 PHP
php弹出对话框实现重定向代码
2014/01/23 PHP
一个判断email合法性的函数[非正则]
2008/12/09 Javascript
jQuery 动画基础教程
2008/12/25 Javascript
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
2010/07/24 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
JavaScript中数据结构与算法(一):栈
2015/06/19 Javascript
js实现防止被iframe的方法
2015/07/03 Javascript
window.onload绑定多个事件的两种解决方案
2016/05/15 Javascript
手机端js和html5刮刮卡效果
2020/09/29 Javascript
微信小程序自动客服功能
2017/11/02 Javascript
jquery中有哪些api jQuery主要API
2017/11/20 jQuery
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
微信小程序实用代码段(收藏版)
2019/12/17 Javascript
[02:04]2018DOTA2亚洲邀请赛Secret赛前采访
2018/04/03 DOTA
Python基于pygame实现图片代替鼠标移动效果
2015/11/11 Python
python中的闭包函数
2018/02/09 Python
【python】matplotlib动态显示详解
2019/04/11 Python
python实现美团订单推送到测试环境,提供便利操作示例
2019/08/09 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
python MultipartEncoder传输zip文件实例
2020/04/07 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
2020/04/16 Python
Python爬虫实现vip电影下载的示例代码
2020/04/20 Python
python pymysql库的常用操作
2020/10/16 Python
美国便宜的横幅和标志印刷在线:Best of Signs
2019/05/29 全球购物
介绍一下MD5加密算法
2016/11/12 面试题
自荐信模版
2013/10/24 职场文书
2014幼儿园家长工作总结
2014/11/10 职场文书
医院消毒隔离制度
2015/08/05 职场文书
商业计划书格式、范文
2019/03/21 职场文书
Javascript的promise,async和await的区别详解
2022/03/24 Javascript
Python正则表达式中flags参数的实例详解
2022/04/01 Python
《极主夫道》真人电影正式预告 定档6月3日上映
2022/04/05 日漫