Mailinglisten-Archive |
Hi, On Fri, May 28, 2004 at 12:09:48PM +0200, Christian Ruetgers wrote: > Ich versuche einer Klasse als Eigenschaft eine Referenz auf eine andere > Klasse schon im Konstruktor mitzugeben. (siehe Codebeispiel). [..] > > Lösung? > > > <?php > > class c1 { > var $meinwert = 'leer'; > > function c1() { > ; // NOP > } > } > > class c2 { > var $_c1_obj = ''; > > function c2($c1ref) { Ich definiere den Parameter bei der Funktion sleber als Ref, nicht bei deren Aufruf. function c2(&$c1ref) { > $this->_c1_obj = $c1ref; hier fehlt die Uebergabe als Ref. durch diese Zuweisung bekommst du wieder eine Kopie, wenn ich es richtig sehe. so klappt es. $this->_c1_obj =& $c1ref; > } > > function zeige_wert() { > echo $this->_c1_obj->meinwert; > } > } > > $c1 = new c1(); > $c2 = new c2(&$c1); hier kannst du es dann weglassen: $c2 = new c2($c1); > //$c2->_c1_obj = &$c1; > > $c1->meinwert = 'bin voll'; > $c2->zeige_wert(); > ?> Bin mir mit der Erklaerung nicht 100% sicher, ausser, dass PHP eben immer Kopien zurueck gibt, man daher also bei jeder Zuweisung/Uebergabe das '&' fuer die Ref schreiben muss. Vielleicht kann das ja aber hier noch jemand besser erklaeren. Gruss Jens
php::bar PHP Wiki - Listenarchive