(PHP 8 >= 8.2.0)
DateTime::__unserialize -- DateTimeImmutable::__unserialize -- DateTimeInterface::__unserialize — Datetime をアンシリアライズする
__unserialize() ハンドラです。
dataシリアライズされた DateTime
値を返しません。
例1 DateTime::__unserialize() の例
<?php
class CustomDateTimeImmutable extends DateTimeImmutable
{
#[\Override]
public function __unserialize(array $data): void
{
echo "Time to `{$data['to']}`:\n\n";
parent::__construct($data['date'], new DateTimeZone($data['timezone']));
}
}
$serializedData = 'O:23:"CustomDateTimeImmutable":4:{s:4:"date";s:25:"2025-03-27T00:00:00+00:00";s:9:"timestamp";i:1743033600;s:8:"timezone";s:3:"UTC";s:2:"to";s:21:"Drink a cup of coffee";}';
var_dump(unserialize($serializedData));上の例の出力は以下となります。
Time to `Drink a cup of coffee`:
object(CustomDateTimeImmutable)#1 (3) {
["date"]=>
string(26) "2025-03-27 00:00:00.000000"
["timezone_type"]=>
int(1)
["timezone"]=>
string(6) "+00:00"
}
__serialize() が定義されているのに __unserialize() が定義されていない カスタムの DateTime オブジェクトをアンシリアライズしようとすると、 Error がスローされます。