2012-11-07 69 views
0

我正在調試我的代碼來檢查當前對象。這個PHP對象隱藏的數據在哪裏?

正是從XML,看起來像這樣

<?xml version="1.0" encoding="UTF-8"?><epreuves><epreuve id="467" noteSur="20"><![CDATA[Civil Engineering China 2012]]></epreuve></epreuves> 

我使用此代碼加載對象simplexml的負荷。

$result=simplexml_load_string($xml_string,null,LIBXML_NOCDATA); 

當調試我的代碼,我看到這一點:

enter image description here

當我將對象轉換爲字符串,它給我我想要的數據,但是爲什麼我沒有看到「民用工程中國2012「在對象的膽量的某個地方?

+0

對象的var_dump會給你什麼?另外,如果在調用它時吐出字符串,是否需要在調試控制檯中查看該值? – Stu

+2

SimpleXmlElement的內部工作方式不同。最好的就是接受它。 – Gordon

回答

1

簡而言之,@ Gordon是非常正確的:SimpleXMLElement類有一些非常不尋常的屬性,所以不希望它的對象在調試器中顯示爲「正常」的。

不過我們再分析一下。通過lxr.php.net簡單搜索(我把PHP 5.3的分支,因爲坦率地說,我不希望這是在5.4不同),最終導致我們的following structure

typedef struct { 
    zend_object zo; 
    php_libxml_node_ptr *node; 
    php_libxml_ref_obj *document; 
    HashTable *properties; 
    xmlXPathContextPtr xpath; 
    struct { 
     xmlChar    *name; 
     xmlChar    *nsprefix; 
     int     isprefix; 
     SXE_ITER    type; 
     zval     *data; 
    } iter; 
    zval *tmp; 
    zend_function *fptr_count; 
} php_sxe_object; 

這裏有幾個顯着的東西 - 什麼事項我想,問題的上下文是「正常」的對象本身(如定義的here)只是這個結構的一部分。