hiho,
sitze gerade an folgendem: Ich muss "irgendwie" auf die Klasse zugreifen, die die aktuelle Methode aufgerufen hat.
Also etwas klarer. Ich habe in etwa sowas:
In diesem Beispiel natürlich simpel, ich könnte $value einfach als Parameter übergeben. In realo habe ich allerdings viel mehr Werte die ich nicht alle als Parameter übergeben will. Jetzt hatte ich mir etwas ausgedacht, weiß aber nicht ob das so geschickt ist. Was ich gemacht habe ist einfach
Nun kenne ich mich mit Referenzen zu Objekten leider nicht so gut aus. Ich meine prinzipiell hab' ich ja jetzt eine Endlosschleife erzeugt. B bekommt die Instanz von A übergeben, diese enthält wiederrum B das wiederrum die Instanz von A übergeben bekommt ... naja und so weiter.
Meine Frage ist jetzt: Kann man das so machen und wenn ja erzeugt das erheblichen Rechen/Datenaufwand bei PHP? Wie handelt PHP so eine "Endlosschleife"?
Mein Code funktioniert übrigens, ich kann auch nicht feststellen, dass er besonders langsam läuft, mache mir aber Sorgen das es Probleme mit der Performance geben könnte wenn ich viele B-Objekte erzeuge (die ja alle eine Referenz zu A übergeben bekommen).
Code gut? Code schlecht?
Danke
mfg
sitze gerade an folgendem: Ich muss "irgendwie" auf die Klasse zugreifen, die die aktuelle Methode aufgerufen hat.
Also etwas klarer. Ich habe in etwa sowas:
PHP-Code:
class A {
public $value = NULL;
public $fields = array();
public function __construct($value) {
$this->value = $value;
$this->fields[] = new B();
}
class B {
public function __construct() {
//Hier muss ich auf $value von A zugreifen können
}
}
PHP-Code:
$this->fields[] = new B(&$this);
Meine Frage ist jetzt: Kann man das so machen und wenn ja erzeugt das erheblichen Rechen/Datenaufwand bei PHP? Wie handelt PHP so eine "Endlosschleife"?
Mein Code funktioniert übrigens, ich kann auch nicht feststellen, dass er besonders langsam läuft, mache mir aber Sorgen das es Probleme mit der Performance geben könnte wenn ich viele B-Objekte erzeuge (die ja alle eine Referenz zu A übergeben bekommen).
Code gut? Code schlecht?
Danke
mfg
Kommentar