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生成带有雪花背景的验证码
Sep 28 PHP
php下图片文字混合水印与缩略图实现代码
Dec 11 PHP
php cache类代码(php数据缓存类)
Apr 15 PHP
深入PHP操作MongoDB的技术总结
Jun 02 PHP
Yii使用CLinkPager分页实例详解
Jul 23 PHP
php实现的发送带附件邮件类实例
Sep 22 PHP
Linux下安装oracle客户端并配置php5.3
Oct 12 PHP
php生成验证码函数
Oct 20 PHP
PHP内核学习教程之php opcode内核实现
Jan 27 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
Mar 31 PHP
php 调用ffmpeg获取视频信息的简单实现
Apr 03 PHP
PHP标准库(PHP SPL)详解
Mar 16 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
自己动手做一个SQL解释器
2006/10/09 PHP
PHP生成静态页面详解
2006/12/05 PHP
使用php来实现网络服务
2009/09/15 PHP
PHP初学者最感迷茫的问题小结
2010/03/27 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
2011/07/18 PHP
php文件操作之文件写入字符串、数组的方法分析
2019/04/15 PHP
javascript或asp实现的判断身份证号码是否正确两种验证方法
2009/11/26 Javascript
JQuery EasyUI 对话框的使用方法
2010/10/24 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
JS图片定时翻滚效果实现方法
2016/06/21 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
angular2+node.js express打包部署的实战
2017/07/27 Javascript
Vue数组更新及过滤排序功能
2017/08/10 Javascript
Angularjs实现上传图片预览功能
2017/09/01 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
js实现HTML中Select二级联动的实例
2018/01/05 Javascript
nodejs实现范围请求的实现代码
2018/10/12 NodeJs
详解Webstorm 下的Angular2.0开发之路(图文)
2018/12/06 Javascript
微信小程序实现横向滚动导航栏效果
2019/12/12 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
2020/07/15 Javascript
jQuery插件实现图片轮播效果
2020/10/19 jQuery
Vue页面渲染中key的应用实例教程
2021/01/12 Vue.js
python网络编程学习笔记(九):数据库客户端 DB-API
2014/06/09 Python
使用python 打开文件并做匹配处理的实例
2019/01/02 Python
使用python接入微信聊天机器人
2020/03/31 Python
Django框架model模型对象验证实现方法分析
2019/10/02 Python
Python pip install如何修改默认下载路径
2020/04/29 Python
keras:model.compile损失函数的用法
2020/07/01 Python
仿酷狗html5手机音乐播放器主要部分代码
2013/05/15 HTML / CSS
德国高品质男装及配饰商城:Cultizm(Raw Denim原色牛仔裤)
2018/04/16 全球购物
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
Jowissa官方网站:瑞士制造的手表,优雅简约的设计
2020/07/29 全球购物
技校毕业生的自我评价
2013/12/27 职场文书
激情洋溢的毕业生就业求职信
2014/03/15 职场文书
大学生安全教育心得体会
2016/01/15 职场文书
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android