首頁 >後端開發 >php教程 >PHP自訂序列化介面Serializable用法分析講解

PHP自訂序列化介面Serializable用法分析講解

jacklove
jacklove原創
2018-07-04 17:46:002001瀏覽

這篇文章主要介紹了PHP自訂序列化介面Serializable用法,結合實例形式分析了Serializable自訂序列化介面的概念、功能、定義及使用方法,需要的朋友可以參考下

本文實例講述了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 &#39;调用构造函数<br>&#39;;
  }
  public function serialize() {
    return serialize($this->data);
  }
  public function unserialize($data) {
    $this->step++;
    $this->data = unserialize($data);
  }
  /*
   * 析构函数
   */
  public function __destruct() {
    echo &#39;step:&#39;.$this->step.&#39; 调用析构函数<br>&#39;;
  }
  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 的Opcache加速的使用方法詳解

利用Laravel產生Gravatar頭像位址的方法

詳談PHP中public,private,protected,abstract等關鍵字的相關用法

#

以上是PHP自訂序列化介面Serializable用法分析講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn