2011-10-21 47 views
1

我有一個XML文件,其中包含一些對象的結構。對象是這樣的:PHP的XML性能和序列化()

class Object: 
{ 
    private $name; 
    private $info; 
    private $$items; 
} 

其中$ items是一個對象數組,因此它是遞歸的。 截至目前,當我必須列出項目時,我使用simplexml在元素中迭代並顯示它們。 我的問題是:

1)如果我解析XML並將數據轉換爲對象而不是使用純XML,它會影響頁面的整體性能麼?考慮到用戶加載的每一頁都需要加載項目,會不會太慢?

2)序列化()一個遞歸對象,如我定義的那個遞歸對象是一個好主意嗎?

回答

2

SimpleXML無法序列化,因爲它被認爲是一種資源。但是,您可以輕鬆獲取$sx->toXML();的輸出並對其進行序列化,在您將其反序列化後重新構建SimpleXMLElement(s)。

重新解析XML的性能差異並不是很大,除非您使用的是非常大的XML樹。

關於你的對象,你也可以實現__sleep()__wakeup()魔術方法,它們允許你在對象序列化和反序列化之前進行修改。

在序列化遞歸對象示例時,請勿在__sleep()魔法中包含$$items變量,並在__wakeup中重新實現它。