Re: PHP 5.3 bug or changed feature??

php.internals

Frank M. Kromann

18 years ago
Hi Marcus, Will there be another way to do this or will they only be accessible from the object? - Frank
> Hello Rob, > > this is intended. The 5.2 solution is just a hack and returns a wrong > result in the first place. The hack was however introduced to make > development easier. Now with 5.3 we were able to change the API and
coudl
> apply the solution that was first developed in HEAD. > > marcus > > Sunday, December 9, 2007, 1:22:09 PM, you wrote: > > > Hi Frank, > > > Frank M. Kromann wrote: > >> Hello Everyon, > >> > >> Casting a SimpleXML object to an array gives different results in
PHP
> >> 5.2.5 and PHP 5.3-dev. > >> > > This is due to the implementation of the get_debug_info handler merged
> > from HEAD. > > The same result happens when calling get_object_vars on a > > SimpleXMLElement object. > > > Marcus, was it intended to only include @attributes with
print_r/var_dump?
> > > Rob > >> Source: > >> > >> $xml = simplexml_load_file("sample.xml"); > >> > >> foreach($xml->column as $column) { > >> var_dump($column); > >> var_dump((array)$column); > >> } > >> > >> sample.xml > >> > >> ?xml version="1.0"?> > >> <cpdata> > >> <column name="ENTERTAINMENT"> > >> <module>cv</module> > >> <module>entsimp</module> > >> </column> > >> <column name="SEAT CONTROL"> > >> <module>pp</module> > >> <module>sc</module> > >> </column> > >> </cpdata> > >> > >> PHP 5.2 output: > >> object(SimpleXMLElement)#4 (2) { > >> ["@attributes"]=> > >> array(1) { > >> ["name"]=> > >> string(13) "ENTERTAINMENT" > >> } > >> ["module"]=> > >> array(2) { > >> [0]=> > >> string(2) "cv" > >> [1]=> > >> string(7) "entsimp" > >> } > >> } > >> array(2) { > >> ["@attributes"]=> > >> array(1) { > >> ["name"]=> > >> string(13) "ENTERTAINMENT" > >> } > >> ["module"]=> > >> array(2) { > >> [0]=> > >> string(2) "cv" > >> [1]=> > >> string(7) "entsimp" > >> } > >> } > >> object(SimpleXMLElement)#5 (2) { > >> ["@attributes"]=> > >> array(1) { > >> ["name"]=> > >> string(12) "SEAT CONTROL" > >> } > >> ["module"]=> > >> array(2) { > >> [0]=> > >> string(2) "pp" > >> [1]=> > >> string(2) "sc" > >> } > >> } > >> array(2) { > >> ["@attributes"]=> > >> array(1) { > >> ["name"]=> > >> string(12) "SEAT CONTROL" > >> } > >> ["module"]=> > >> array(2) { > >> [0]=> > >> string(2) "pp" > >> [1]=> > >> string(2) "sc" > >> } > >> } > >> > >> PHP 5.3 output: > >> > >> object(SimpleXMLElement)#4 (2) { > >> ["@attributes"]=> > >> array(1) { > >> ["name"]=> > >> string(13) "ENTERTAINMENT" > >> } > >> ["module"]=> > >> array(2) { > >> [0]=> > >> string(2) "cv" > >> [1]=> > >> string(7) "entsimp" > >> } > >> } > >> array(1) { > >> ["module"]=> > >> array(2) { > >> [0]=> > >> string(2) "cv" > >> [1]=> > >> string(7) "entsimp" > >> } > >> } > >> object(SimpleXMLElement)#5 (2) { > >> ["@attributes"]=> > >> array(1) { > >> ["name"]=> > >> string(12) "SEAT CONTROL" > >> } > >> ["module"]=> > >> array(2) { > >> [0]=> > >> string(2) "pp" > >> [1]=> > >> string(2) "sc" > >> } > >> } > >> array(1) { > >> ["module"]=> > >> array(2) { > >> [0]=> > >> string(2) "pp" > >> [1]=> > >> string(2) "sc" > >> } > >> } > >> > >> Not that the attributes are gone when SimpleXML objects are converted
in