Manuel B.: PHP5, SimpleXML und seltsame Zuweisung

Hi,
ich hab grad einen komischen Effekt beobachtet, den ich nicht verstehe.
Ich lese per SimpleXML eine XML-Datei ein und speichere das ganze in $xml

ein print_r($xml) ergibt (gekürzt):

  
SimpleXMLElement Object  
(  
    [@attributes] => Array  
        (  
            [art] => module  
        )  
  
    [name] => images  
    [description] => Bilderverwaltung  
    [version] => 0.0.1  
    [old_version] => 0.0.0  
    [admin] => true  

Jetzt will ich [name] ausgeben. Ein echo $xml->name ergibt dann auch richtig "images".
Jetzt will ich aber einige Werte in ein neues Array schreiben. Also mach ich ein

$installed['name'] = $xml->name;

Das komische ist jetzt, $installed['name'] enthält jetzt ein Array, und zwar

  
SimpleXMLElement Object  
(  
    [0] => images  
)  

Wieso funktioniert die direkte Ausgabe, die Übergabe an eine andere Variable (hab ich auch versucht, der gleiche Effekt, wie beim schreibn in ein Array) ergibt aber ein neues Array?

Kann das ein Bug sein oder ist das beabsichtigt. Und wenn ja, was ist der Sinn dabei?

  1. echo $begrüßung;

    ich hab grad einen komischen Effekt beobachtet, den ich nicht verstehe.
    Ich lese per SimpleXML eine XML-Datei ein und speichere das ganze in $xml

    SimpleXML arbeitet, so wie es aussieht, mit Overloading.

    Jetzt will ich [name] ausgeben. Ein echo $xml->name ergibt dann auch richtig "images".

    Hier schlägt __toString() zu ...

    Jetzt will ich aber einige Werte in ein neues Array schreiben. Also mach ich ein
    $installed['name'] = $xml->name;

    ... und hier nicht.

    Kann das ein Bug sein oder ist das beabsichtigt. Und wenn ja, was ist der Sinn dabei?

    Das Verhalten ist sicher Absicht. Dass hier "Magie" verwendet wird, wird nur nicht besonders deutlich in der Dokumentation gesagt. Aber, siehe Example 4 (switch mit Typecast) und die Erklärung bei Example 5.

    echo "$verabschiedung $name";