(PHP 5 >= 5.1.0, PHP 7, PHP 8)
自定義序列化的接口。
實現(xiàn)此接口的類將不再支持 __sleep() 和 __wakeup() 。 不論何時,只要有實例需要被序列化, serialize 方法都將被調(diào)用。它不會調(diào)用 __destruct(),除非在該方法中編寫了相關功能,否則它也不會有副作用(side effect)。 當數(shù)據(jù)被反序列化時,類將被感知并且調(diào)用合適的 unserialize() 方法而不是調(diào)用 __construct()。如果需要執(zhí)行標準的構(gòu)造器,應該在這個方法中進行處理。
從 PHP 8.1.0 起,實現(xiàn) Serializable 接口的類如果沒有同時實現(xiàn) __serialize()、__unserialize() 方法,將產(chǎn)生棄用警告。
示例 #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"