這篇文章主要介紹了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 '调用构造函数<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中public,private,protected,abstract等關鍵字的相關用法
#
以上是PHP自訂序列化介面Serializable用法分析講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!