查詢

DateTime::__wakeup()函式—用法及示例

「 反序列化 DateTime 物件 」


函式: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') 輸出反序列化後的日期時間值。

補充糾錯
上一個函式: DateTime::__set_state()函式
下一個函式: DateTimeImmutable::add()函式
熱門PHP函式
分享連結