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 相关文章推荐
phpmyadmin中配置文件现在需要绝密的短语密码的解决方法
Feb 11 PHP
php session安全问题分析
Jun 24 PHP
解析php中heredoc的使用方法
Jun 17 PHP
解析使用substr截取UTF-8中文字符串出现乱码的问题
Jun 20 PHP
测试php连接mysql是否成功的代码分享
Jan 24 PHP
php setcookie函数的参数说明及其用法
Apr 20 PHP
PHP解析html类库simple_html_dom的转码bug
May 22 PHP
PHP集成百度Ueditor 1.4.3
Nov 23 PHP
PHP中的Trait 特性及作用
Apr 03 PHP
PHP合并数组函数array_merge用法分析
Feb 17 PHP
PHP基于ORM方式操作MySQL数据库实例
Jun 21 PHP
php-fpm.conf配置文件中文说明详解及重要参数说明
Oct 10 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的优点与缺点
2013/04/11 PHP
php的hash算法介绍
2014/02/13 PHP
php文件上传及下载附带显示文件及目录功能
2017/04/27 PHP
Laravel 实现数据软删除功能
2019/08/21 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
2020/01/26 PHP
JQuery 文本框使用小结
2010/05/22 Javascript
使用javascipt---实现二分查找法
2013/04/10 Javascript
不使用浏览器运行javascript代码的方法
2013/07/24 Javascript
javascript实现数字验证码的简单实例
2014/02/10 Javascript
Javascript基础教程之变量
2015/01/18 Javascript
jQuery实现简单的间隔向上滚动效果
2015/03/09 Javascript
浅谈javascript中return语句
2015/07/15 Javascript
javascript中的previousSibling和nextSibling的正确用法
2015/09/16 Javascript
值得分享的bootstrap table实例
2016/09/22 Javascript
JavaScript实现瀑布流以及加载效果
2017/02/11 Javascript
在使用JSON格式处理数据时应该注意的问题小结
2017/05/20 Javascript
JavaScript数组排序reverse()和sort()方法详解
2017/12/24 Javascript
axios简单实现小程序延时loading指示
2018/07/30 Javascript
详解Webpack多环境代码打包的方法
2018/08/03 Javascript
解决Vue.js由于延时显示了{{message}}引用界面的问题
2018/08/25 Javascript
解决Vue动态加载本地图片问题
2019/10/09 Javascript
Vue 列表页带参数进详情页的操作(router-link)
2020/11/13 Javascript
[53:29]完美世界DOTA2联赛循环赛 DM vs Matador BO2第二场 11.04
2020/11/05 DOTA
Python读取本地文件并解析网页元素的方法
2018/05/21 Python
详解python 模拟豆瓣登录(豆瓣6.0)
2019/04/18 Python
python简单实现插入排序实例代码
2020/12/16 Python
舒适的豪华鞋:Taryn Rose
2018/05/03 全球购物
小学生我的梦想演讲稿
2014/08/21 职场文书
倡议书作文
2015/01/19 职场文书
五四青年节比赛演讲稿
2015/03/18 职场文书
2015年国庆晚会主持词
2015/07/01 职场文书
2016年小学教师政治学习心得体会
2016/01/23 职场文书
《曾国藩家书》读后感——读家书,立家风
2019/08/21 职场文书
导游词之泰山玉皇顶
2019/12/23 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
redis实现排行榜功能
2021/05/24 Redis