(PHP 8 >= 8.2.0)
DateTime::__unserialize -- DateTimeImmutable::__unserialize -- DateTimeInterface::__unserialize — Подготавливает данные для восстановления объекта даты и времени при десериализации
Метод __unserialize() обрабатывает данные промежуточного представления объекта даты и времени, аналогичные подготовленным методом DateTimeInterface::__serialize, для восстановления исходного объекта даты и времени при десериализации.
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"
}
При попытке десериализовать пользовательский объект DateTime выбрасывается ошибка Error, если метод __serialize() определили, а определение метода __unserialize() не добавили.