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

關於PHP自訂序列化介面Serializable的用法分析

不言
不言原創
2018-06-19 11:10:092037瀏覽

這篇文章主要介紹了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中文網!

相關推薦:

關於PHP如何實現鍊錶的定義與反轉功能

關於PHP物件導向的事務腳本模式

關於PHP中的資料傳輸CURL

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

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