(PHP 5 >= 5.1.0, PHP 7, PHP 8)
自定義序列化的接口。
實(shí)現(xiàn)此接口的類(lèi)將不再支持 __sleep() 和 __wakeup() 。 不論何時(shí),只要有實(shí)例需要被序列化, serialize 方法都將被調(diào)用。它不會(huì)調(diào)用 __destruct(),除非在該方法中編寫(xiě)了相關(guān)功能,否則它也不會(huì)有副作用(side effect)。 當(dāng)數(shù)據(jù)被反序列化時(shí),類(lèi)將被感知并且調(diào)用合適的 unserialize() 方法而不是調(diào)用 __construct()。如果需要執(zhí)行標(biāo)準(zhǔn)的構(gòu)造器,應(yīng)該在這個(gè)方法中進(jìn)行處理。
從 PHP 8.1.0 起,實(shí)現(xiàn) Serializable 接口的類(lèi)如果沒(méi)有同時(shí)實(shí)現(xiàn) __serialize()、__unserialize() 方法,將產(chǎn)生棄用警告。
示例 #1 基礎(chǔ)用法
<?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());
?>
以上例程的輸出類(lèi)似于:
string(38) "C:3:"obj":23:{s:15:"My private data";}" string(15) "My private data"