![]() Mailinglisten-Archive |
Ok, ich denke ich mu� das Problem noch mal neu darstellen, ich hab noch so einiges probiert, und damit hat sich auch das Problem verlagert. Das ganze sieht bestimmt erstmal ziemlich unsinnig aus, aber das Verhalten von PHP ist mir r�tselhaft... also verzeiht mir das kryptische Beispiel... ;-) Beispiellisting: ----------------------------------------------- class Container { var $elements = array(); var $prototype; function Container($prototype) { $this->prototype = $prototype; } function insert_element() { array_push($this->elements, $this->prototype); } function clear() { foreach ($this->elements as $key => $value) { $this->elements[$key]->clear(); } } } class Atom { var $foo = ""; function clear() { $this->foo = ""; } } $atom = new Atom(); $element = new Container($atom); $element->insert_element(); // das ist jetzt die kritische Stelle. Lasse ich diesen Methoden- // aufruf weg, klappt alles ........ $element->clear(); $container = new Container($element); $container->insert_element(); $container->insert_element(); $container->elements[0]->elements[0]->foo = "123"; print_r($container); ------------------------------------------------------------ Erkl�rung: Es gibt also das Objekt $container, das in seinem array elements wiederum andere Objekte ($element) vom Typ Container beherbergt. $element hat nun wieder ein Unterobjekt von Typ Atom, da� den Wert $foo beinhaltet. (kann mir jemand folgen?? ;-)) Nachdem ich nun per $container->elements[0]->elements[0]->foo = "123"; das $foo Property in $container->elements[0]->elements[0] gesetzt habe, sollte man doch meinen, da� $container->elements[1]->elements[0]->foo noch den alten wert hat. aber pustekuchen, da� wurde mit ge�ndert. Lasse ich die Zeile $element->clear weg, funktioniert alles. Entschuldigt, da� ich euch mit so langen Listings bel�stige, aber vielleicht hat ja jemand ne Idee ;-)) Danke, Florian.
php::bar PHP Wiki - Listenarchive