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
>> PHP 5.3. Is this a bug or a feature change?
>>
>> - Frank
>>
>>   




Best regards,
 Marcus

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to