URL: https://www.overclockers.at/coding-stuff/php_referenz_einer_klasse_in_einer_anderen_klasse__214929/page_1 - zur Vollversion wechseln!
Code: PHP$a = new aclass(); $b = new bclass($a);
Code: PHP$b = new blcass(&$a);
Einfach im Konstruktor von bclass die Referenz festlegen, so wie bei jeder normalen Funktion
Code: PHPclass bclass { bclass(&$a) { $a->foo(); } }
hmm also angenommen du hast in der klasse a die methode doIt();
einfach
$a = new a();
$b = new b(a);
a{
doIt(){}
}
b{
public a;
construct(a){
$this->a = a;
}
}
und dann $b->a->doIt();
Hoffe du meinst das so
danke. D.h. das wäre korrekt? Handelt sich auch um PHP5.
Code: PHPclass bclass { function __construct(&$aaa) { } function test() { $aaa->foo(); } }
Code: PHPclass bclass { private $aaa; function __construct(&$aaa) { } function test() { $aaa->foo(); } }
Objekte werden in PHP5 immer wie eine Referenz behandelt, die Object-Variable selbst ist nur ein Identifier. Hier gibt es ein paar Beispiele was so ca. möglich ist.
Deine Beispiele sind komplett falsch. Erstens fehlt überall das $this-> um die Variable auch wirklich anzusprechen und zweitens musst du im Constructor noch die übergebene Variable der Member-Variable zuordnen.
Das Reference-Sign ist bei Objekten in deinem Fall nicht notwendig. Außerdem wirst du langfristig Probleme mit "allow_call_time_pass_reference" bekommen ...
Ok, danke. D.h. ich übergebe die Klasse ganz normal und erzeuge damit sowieso keine Kopie und damit nicht mehr Speicher.
Also muß ich die Klasse, die ich übergebe, extra noch einer Variablen im Konstruktor zuweisen und immer mit $this-> ansprechen.
Du übergibst die Instanz eines Objects, bzw. den Identifier auf die Instanz eines Objects.
Ja, du musst die Member-Variablen natürlich stets zuweisen. Das wird nicht automatisch für dich erledigt.
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025