Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP XML性能和序列化()_Php_Xml_Performance_Serialization - Fatal编程技术网

PHP XML性能和序列化()

PHP XML性能和序列化(),php,xml,performance,serialization,Php,Xml,Performance,Serialization,我有一个XML文件,其中包含一些对象的结构。对象是这样的: class Object: { private $name; private $info; private $$items; } 其中$items是一个对象数组,因此它是递归的。 现在,当我必须列出项目时,我使用simplexml在元素中迭代并显示它们。 我的问题是: 1) 如果我解析XML并将数据转换为对象,而不是使用纯XML,它会对页面的整体性能产生那么大的影响吗?考虑到用户加载的每个页面都必须加载项目,它是否会减慢太

我有一个XML文件,其中包含一些对象的结构。对象是这样的:

class Object:
{
  private $name;
  private $info;
  private $$items;
}
其中$items是一个对象数组,因此它是递归的。 现在,当我必须列出项目时,我使用simplexml在元素中迭代并显示它们。 我的问题是:

1) 如果我解析XML并将数据转换为对象,而不是使用纯XML,它会对页面的整体性能产生那么大的影响吗?考虑到用户加载的每个页面都必须加载项目,它是否会减慢太多速度


2) 序列化()像我定义的递归对象一样的递归对象是一个好主意吗?

SimpleXML不能序列化,因为它被认为是一个资源。但是,您可以轻松获取
$sx->toXML()的输出并序列化,在取消序列化后重新构造SimpleXMLElement

除非您使用非常大的XML树,否则重新解析XML的性能差异不会很大

对于您的对象,您还可以实现
\uu sleep()
\uu wakeup()
魔术方法,这将允许您在序列化和取消序列化对象之前对其进行更改

序列化递归对象示例时,不要将
$$items
变量包含在
\u sleep()
魔术方法中,并在
\u wakeup
中重新实现它