函式:DateTime::__wakeup()
適用版本:PHP 5 >= 5.3.0, PHP 7
用法: DateTime::__wakeup() 方法用於反序列化 DateTime 物件。當從資料庫或檔案中獲取 DateTime 物件時,該方法會被自動呼叫。
示例:
class MyClass {
public $date;
public function __construct() {
$this->date = new DateTime('2021-01-01');
}
public function __wakeup() {
// 新增特定邏輯,例如重新設定時區或執行其他操作
$this->date->setTimezone(new DateTimeZone('Asia/Shanghai'));
}
}
$obj = new MyClass();
// 將物件序列化並儲存到檔案
file_put_contents('object.dat', serialize($obj));
// 從檔案中讀取並反序列化物件
$obj2 = unserialize(file_get_contents('object.dat'));
// 輸出反序列化後的日期時間物件
echo $obj2->date->format('Y-m-d H:i:s'); // 輸出: 2021-01-01 00:00:00
在上面的示例中,MyClass 類包含一個 DateTime 物件 $date
。當物件被序列化並儲存到檔案中時,DateTime 物件自動呼叫 __wakeup()
方法來執行特定邏輯。在該示例中,__wakeup()
方法設定了新的時區,確保在反序列化後的物件中正確顯示日期和時間。最後,我們從檔案中讀取物件並透過 $obj2->date->format('Y-m-d H:i:s')
輸出反序列化後的日期時間值。