我想存储在会话中的类实例包含一个加载的DOMDocument数组。
正如这里的一个答案所指出的:PHP的怪癖和陷阱,当您序列化包含XML的对象时,XML结构无法在未序列化过程中幸存下来。据我所知,PHP5应该自动序列化会话数据,所以我需要知道的是如何使XML在序列化/非序列化过程中幸存下来?
我已经读过了,它看起来是不可能完成的,加上使用自动序列化/反序列化写入和读取会话文件所涉及的开销,似乎更可取的是只在__sleep和__wakeup上读取和写入类实例中的XML文件。是这样吗?
http://php.net/manual/en/function.serialize.php
这对于在不丢失PHP值的类型和结构的情况下存储或传递PHP值非常有用
要序列化的值。serialize()处理除资源类型之外的所有类型。您甚至可以序列化()数组,这些数组包含对自身的引用。您正在序列化的数组/对象内部的循环引用也将被存储。任何其他参考资料都将丢失。
- php资源是什么
- php资源列表
也许您可以考虑将原始数据存储到memcache、数据库、
当您的会话指向该时(如memcache密钥、数据库行ID)
附加读取
你可能会为以下事情感到好笑(也许我错了)-
- http://www.php.net/manual/en/simplexml.resources.php
- http://www.php.net/manual/en/dom.resources.php
- http://www.php.net/manual/en/session.resources.php
为什么不简单地将DOMDocument导出为字符串,然后序列化此字符串?