Re: PHP 5.3 bug or changed feature??

From: Date: Sun, 09 Dec 2007 12:22:09 +0000
Subject: Re: PHP 5.3 bug or changed feature??
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-33882@lists.php.net to get a copy of this message
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


« previous php.internals (#33882) next »