(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() Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ.