PHP 8.1 Domdocument SerializationPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 PHP 8.1 Domdocument Serialization

Сообщение Anonymous »

Я пытаюсь сделать следующий класс совместимым с нативной сериализацией PHP, особенно при запуске на PHP 8.1. < /p>

Код: Выделить всё

class SerializableDomDocument extends DOMDocument
{
private $xmlData;

public function __sleep(): array
{
$this->xmlData = $this->saveXML();
return ['xmlData'];
}

public function __wakeup(): void
{
$this->loadXML($this->xmlData);
}
}
Это все хорошо и на денди на более низких версиях PHP, но 8.1 приводит к неучтенному исключению: сериализация 'serializabledomdocument' не разрешена всякий раз, когда такой объект предпринимается для передачи на функцию serialize () . Вот образец кода, который создаст такое исключение: https://3v4l.org/m8sgc.
образное/> Мне известно о методах __serialize () /__unserialize () , введенные в PHP 7.4, но использование их, кажется, не помогает. Следующий кусок кода приводит к тому же исключению, что и здесь, можно наблюдать: https://3v4l.org/zu0p3.
class SerializableDomDocument extends DOMDocument
{
public function __serialize(): array
{
return ['xmlData' => $this->saveXML()];
}

public function __unserialize(array $data): void
{
$this->loadXML($data['xmlData']);
}
}
< /code>
Я довольно сбит с толку этой проблемой и очень оценю любые подсказки. В настоящее время кажется, что единственным способом вперед было бы ввести явный нормализатор/денормализатор, что приведет к нарушению изменения в API кодовой базы. Я хотел бы избежать этого.


Подробнее здесь: https://stackoverflow.com/questions/729 ... ialization
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»