这个PHP对象中的数据隐藏在哪里?

时间:2012-11-07 10:49:30

标签: php object simplexml

我正在调试我的代码以检查当前对象。

来自xml的SimpleXml加载看起来像这个

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

我正在使用此代码加载对象。

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

当我调试我的代码时,我看到了:

enter image description here

当我将对象转换为字符串时,它会向我提供我想要的数据,但为什么我看不到&#34;土木工程中国2012&#34;在对象的胆量的某个地方?

1 个答案:

答案 0 :(得分: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)只是这个结构的一部分。