Klassen referenz
-
Wie kann ich am Besten eine Referenz auf eine bestimmte klasse setzen, die ich über eine Variable aufrufe.
z.B. Das Ganze kann ich mir gar nicht erklären...?!!
<?php //$_p = new test(); # wenn diese zeile dekommentiert ist, klappt alles class test { var $var = "Eins"; function test(){ global $_p; $_p = &$this; } function _do(){ $this->var = "Zwei"; } function out(){ echo $this->var; } } //$la = new test(); new test(); $_p->_do(); $_p->out(); // Fehler (wenn dekommentiert) ?>
-
Eine genauere Fehlermeldung wäre hilfreich. Wozu brauchst du hier Referenzen? Wichtig wäre auch zu wissen, ob du PHP 4, 5 oder 6 verwendest.
PS: es heißt "auskommentieren", nicht "dekommentieren"
-
Nimm mal das "&" vor dem $this weg. $this ist ja bereits ein Zeiger.
-
Nimm mal das "&" vor dem $this weg. $this ist ja bereits ein Zeiger.
das ist schon richtig, dennoch behandelt das PHP anders, wenn $t = $p, dann wird in $t das gespeichert, was unter $p zu finden ist(egal, ob referenz oder direct das objekt).
Wenn man $GLOBALS['_p'] nutzt funktioniert es!!
-
ich bin mir nicht sicher, ob ich das problem hier verstanden habe, aber ich versuchs mal...
//$_p = new test(); # wenn diese zeile dekommentiert ist, klappt alles // die obige Zeile ist auskommentiert, d.h. $_p ist nirgends bekannt und du // arbeitest ja weiter unten damit, was also nicht gehen kann. Ebenso arbeitest du in der Klasse selbst damit, was auch nicht gehen kann. class test { var $var = "Eins"; function test(){ global $_p; $_p = &$this; } function _do(){ $this->var = "Zwei"; } function out(){ echo $this->var; } } //$la = new test(); new test(); $_p->_do(); $_p->out(); // Fehler (wenn dekommentiert)