当前位置:首页 > PHP教程 > php应用 > 列表

PHP自定义序列化接口Serializable用法分析

发布:smiling 来源: PHP粉丝网  添加日期:2021-08-25 22:02:49 浏览: 评论:0 

这篇文章主要介绍了PHP自定义序列化接口Serializable用法,结合实例形式分析了Serializable自定义序列化接口的概念、功能、定义及使用方法,需要的朋友可以参考下

本文实例讲述了PHP自定义序列化接口Serializable用法,分享给大家供大家参考,具体如下:

PHP Serializable是自定义序列化的接口。实现此接口的类将不再支持__sleep()和__wakeup(),当类的实例被序列化时将自动调用serialize方法,并且不会调用 __destruct()或有其他影响。当类的实例被反序列化时,将调用unserialize()方法,并且不执行__construct()。接口摘要如下:

  1. Serializable { 
  2.   abstract public string serialize ( void ) 
  3.   abstract public mixed unserialize ( string $serialized ) 

例子说明:

  1. <?php 
  2. /** 
  3.  * 类自定义序列化相关操作 
  4.  * 
  5.  * @author 疯狂老司机 
  6.  */ 
  7. class obj implements Serializable { 
  8.   private $data
  9.   private $step = 0; 
  10.   /* 
  11.    * 构造函数 
  12.    */ 
  13.   public function __construct() { 
  14.     $this->data = "这是一段测试文字<br>"
  15.     echo '调用构造函数<br>'
  16.   } 
  17.   public function serialize() { 
  18.     return serialize($this->data); 
  19.   } 
  20.   public function unserialize($data) { 
  21.     $this->step++; 
  22.     $this->data = unserialize($data); 
  23.   } 
  24.   /* 
  25.    * 析构函数 
  26.    */ 
  27.   public function __destruct() { 
  28.     echo 'step:'.$this->step.' 调用析构函数<br>'
  29.   } 
  30.   public function getData(){ 
  31.     return $this->data; 
  32.   } 
  33. $obj = new obj;// 调用obj::__construct 
  34. $ser = serialize($obj);// 调用obj::serialize 
  35. $newobj = unserialize($ser);// 调用obj::unserialize 
  36. echo $newobj->getData();// 调用obj::getData 
  37. // 执行结束,调用析构函数,先执行newobj对象的析构函数在执行obj对象的析构函数 
  38. ?> 

以上例子输出:

调用构造函数

这是一段测试文字

step:1 调用析构函数

step:0 调用析构函数

Tags: PHP序列化接口 Serializable

分享到: