本文實例講述了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面向對象程序設計入門教程》、《PHP數組(Array)操作技巧大全》、《PHP基本語法入門教程》、《PHP運算與運算符用法總結》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
您可能感興趣的文章:- 如何使用Serializable接口來自定義PHP中類的序列化