Serializable 介面
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
簡介
自定義序列化的介面。
實現此介面的類將不再支援 __sleep() 和 __wakeup() 。 不論何時,只要有實例需要被序列化, serialize 方法都將被呼叫。它不會呼叫 __destruct(),除非在該方法中編寫了相關功能,否則它也不會有副作用(side effect)。 當數據被反序列化時,類將被感知並且呼叫合適的 unserialize() 方法而不是呼叫 __construct()。如果需要執行標準的構造器,應該在這個方法中進行處理。
警告
從 PHP 8.1.0 起,實現 Serializable 介面的類如果沒有同時實現 __serialize()、__unserialize() 方法,將產生棄用警告。
介面摘要
interface Serializable {
/* 方法 */
}示例 #1 基礎用法
<?php
class obj implements Serializable {
private $data;
public function __construct() {
$this->data = "My private data";
}
public function serialize() {
return serialize($this->data);
}
public function unserialize($data) {
$this->data = unserialize($data);
}
public function getData() {
return $this->data;
}
}
$obj = new obj;
$ser = serialize($obj);
var_dump($ser);
$newobj = unserialize($ser);
var_dump($newobj->getData());
?>
以上例程的輸出類似於:
string(38) "C:3:"obj":23:{s:15:"My private data";}" string(15) "My private data"
目錄
- Serializable::serialize — 對象的字串表示
- Serializable::unserialize — 構造對像