Mailinglisten-Archive |
<snip> > function new_child($name){ > $this->childs[$this->i]= new secondlevel($name); > $this->i++; > } </snip> müsste eher so lauten: function &new_child($name){ $this->childs[$this->i]= new secondlevel($name); $this->i++; return $this->childs[$this->i]; } Des Weiteren möchte ich Dir den Tip geben, Deine new_child Methoden abzuändern, z.B. so: function &new_child($name) { // ist kein name gegeben, raus hier mit null if (empty($name)) { return null; } $new_child = new secondlevel($name); if (is_object($new_child)) { $this->childs[] = $new_child; return $new_child; } else { return null; } } // TESTCODE: $mynewc=& $obj->new_child("testname"); if ($mynewc === null) { die('WTF?! kein new_child von obj erhalten'); } Vorteil: Der Code ist wesentlich robuster und stürtzt nicht einfach "mir nichts dir nichts" ab. Zweiter Vorteil: Weniger Resourcenaufwand. Du brauchst die Member-Variable $i nicht wirklich. Du kannst genauso eine getCount() Methode einbauen: function getCount() { return count($this->childs); } Gut Vorteil ist bei großen Strukturen in den Arrays, dass der Durchlauf von count() länger dauert als der Zugriff auf die Variable. Aber generell plädiere ich dafür, get und set Methoden zu implementieren und auch im Klassen-eigenen Code mit diesen und nicht direkt mit Membervariablen zu hantieren. Übrigens kannst Du auch in der Methode output() statt $html=$html.$this->text; einfacher $html .= $this->text; schreiben. HTH Gruß ----- -+- ----- Dennis Sterzenbach - FI/AE email: dennis at darknoise.de web : http://www.darknoise.de
php::bar PHP Wiki - Listenarchive