2012-11-07 2 views
0

현재 코드를 디버깅하여 현재 객체를 검사하고 있습니다.이 PHP 객체의 데이터는 어디에서 숨어 있습니까?

내가 객체를로드하기 위해이 코드를 사용하고이

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

과 같은 XML에서 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을 통해 간단한 검색 (나는 솔직히 나는이 5.4 다른 것으로 기대하지 않습니다 말하기로, PHP 5.3 분기를했다) 결국 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과 같은)는이 구조의 일부일뿐입니다.

관련 문제