Поддерживать состояние XML-документа после сериализации сеанса - PullRequest
2 голосов
/ 10 июня 2011

Экземпляр класса, который я хочу сохранить в сессии, содержит массив загруженных DOMDocuments.

Как отмечено в одном из ответов здесь: Причуды и ловушки PHP , когда вы сериализуете объект, содержащий XML, структура XML не выдерживает процесс десериализации. Насколько я понимаю, PHP5 должен автоматически сериализовать данные сеанса, поэтому мне нужно знать, как заставить XML пережить процесс сериализации / десериализации?

Я читал об этом, и похоже, что это невозможно, плюс накладные расходы, связанные с записью и чтением файла сеанса с автоматической сериализацией / десериализацией, делают предпочтительным просто читать и записывать файлы XML в экземпляр класса в __sleep и __wakeup. Это тот случай?

Ответы [ 2 ]

2 голосов
/ 17 июня 2011

http://php.net/manual/en/function.serialize.php

Это полезно для хранения или передачи значений PHP без потери их типа и структуры.

Значение для сериализации.serialize () обрабатывает все типы, кроме resource-type .Вы даже можете сериализировать () массивы, которые содержат ссылки на себя.Циркулярные ссылки внутри массива / объекта, который вы сериализуете, также будут сохранены.Любая другая ссылка будет потеряна.

возможно, вы можете сохранить исходные данные в memcache, базе данных,
, пока ваша сессия указывает на это (например, ключ memcache, идентификатор строки базы данных)


дополнительныечтение

Вы могли бы позабавиться следующим (возможно, я ошибался) -

0 голосов
/ 21 июня 2011

Почему бы вам просто не экспортировать DOMDocument в виде строки , а затем сериализовать эту строку?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...