000
28.02.2005, 09:59 Uhr
virtual
Sexiest Bit alive (Operator)
|
Hallo, ich versuche mich mit PHP anzufreunden und bin kurz davor, zum Feind zu werden. Ich habe folgenden stark verkürzten Code:
Code: |
class item { var $node; // 1 function item($node) { $this->$node = $node; if ($this->$node!=null) { echo "Node gesetzt<br>"; } } // 2 function test() { if ($this->$node!=null) { echo "Node gesetzt<br>"; } } }
class doctree { var $doc;
function doctree() { $this->$doc = new DOMDocument(implode('', file('doctree.xml'))); } function get_item($item_path) { # Split path into components $path_comps = explode('/', $item_path); # Find according node $node = $this->$doc->document_element(); foreach($path_comps as $comp) { $node = $this->find_child_item_node($node, $comp); // 3 $item = new item($node); echo $item->test(); return $item; } } }
|
Ich habe also zwei Klassen, doctree und item. Auf irgendeine Art erzeugt doctree item Objekte und gibt diesen einen Parameter mit auf den Weg. Nach meinem Verständnis ist die mit "1" kommentierte Zeile ein Konstruktor für Klasse item. Ich sehe anhand der ausgaben, daß der $node Parameter korrekt gesetzt wird. Der Konstruktor aufruf erfolgt in der mit "3" kommentierten Zeile. Ich würde nun erwarten, daß wenn ich die Test-Methode ("2") des eben erst konstruierten Objekts aufrufe, der Node-Member noch immer gesetzt ist.
Was mache ich denn falsch, denn dem ist nicht so: das ist NULL geworden. -- Gruß, virtual Quote of the Month Ich eß' nur was ein Gesicht hat (Creme 21) |