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 相关文章推荐
Windows下PHP5和Apache的安装与配置
Sep 05 PHP
简单采集了yahoo的一些数据
Feb 14 PHP
php与php MySQL 之间的关系
Jul 17 PHP
深入PHP内存相关的功能特性详解
Jun 08 PHP
从PHP $_SERVER相关参数判断是否支持Rewrite模块
Sep 26 PHP
php读取目录所有文件信息dir示例
Mar 18 PHP
mac下Apache + MySql + PHP搭建网站开发环境
Jun 02 PHP
PHP变量赋值、代入给JavaScript中的变量
Jun 29 PHP
py文件转exe时包含paramiko模块出错解决方法
Aug 12 PHP
php实现的redis缓存类定义与使用方法示例
Aug 09 PHP
php操作mongodb封装类与用法实例
Sep 01 PHP
Laravel框架实现的使用smtp发送邮件功能示例
Mar 12 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上传文件时文件过大$_FILES为空的解决方法
2013/11/26 PHP
详解PHP错误日志的获取方法
2015/07/20 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
用PHP去掉文件头的Unicode签名(BOM)方法
2017/06/22 PHP
php提取微信账单的有效信息
2018/10/01 PHP
使用laravel和ECharts实现折线图效果的例子
2019/10/09 PHP
DOM相关内容速查手册
2007/02/07 Javascript
JavaScript 函数式编程的原理
2009/10/16 Javascript
卸载安装Node.js与npm过程详解
2016/08/15 Javascript
Bootstrap中data-target 到底是什么
2017/02/14 Javascript
jQuery动态移除和添加背景图片的方法详解
2017/03/07 Javascript
微信小程序使用video组件播放视频功能示例【附源码下载】
2017/12/08 Javascript
微信小程序实现点击按钮后修改颜色
2019/12/05 Javascript
纯JS开发baguetteBox.js响应式画廊插件
2020/06/28 Javascript
Element-UI 使用el-row 分栏布局的教程
2020/10/26 Javascript
[04:38]完美世界携手游戏风云打造 卡尔工作室饰品系统篇
2013/04/25 DOTA
[17:36]VG战队纪录片
2014/08/21 DOTA
简单的编程0基础下Python入门指引
2015/04/01 Python
详解Python中的各种函数的使用
2015/05/24 Python
使用Python编写简单的画图板程序的示例教程
2015/12/08 Python
Python使用设计模式中的责任链模式与迭代器模式的示例
2016/03/02 Python
python3.x上post发送json数据
2018/03/04 Python
python爬取网页内容转换为PDF文件
2020/07/28 Python
pandas 小数位数 精度的处理方法
2018/06/09 Python
python opencv将表格图片按照表格框线分割和识别
2019/10/30 Python
基于python实现把图片转换成素描
2019/11/13 Python
CSS3实现莲花绽放的动画效果
2020/11/06 HTML / CSS
印度最大的酒店品牌网络:OYO Rooms
2016/07/24 全球购物
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
ASICS印度官方网站:日本专业运动品牌
2020/06/20 全球购物
中国电子产品批发商/跨境电商/外贸网:Sunsky-online
2020/04/20 全球购物
入党积极分子学习两会心得体会范文
2014/03/17 职场文书
物流专业求职信
2014/06/30 职场文书
2014年教师个人工作总结
2014/11/10 职场文书
社区好人好事材料
2014/12/26 职场文书
使用Ajax实现无刷新上传文件
2022/04/12 Javascript