Hi Rato,
Mag sein, dass das nicht das ist, was du hören willst, aber dein Programmcode sieht sehr stark nach PHP 4 aus. Steige endlich auf PHP 5 um, es ist höchste Zeit dazu.
„[13-Jul-2007] The PHP development team hereby announces that support
for PHP 4 will continue until the end of this year only.”
(Zitat php.net)
In PHP 5 werden Objekte grundsätzlich als call-by-reference übergeben. Wenn du ein Objekt kopieren willst, musst du dies explizit mit __clone() machen.
Insofern kannst du unter PHP 5 getrost folgenden Code verwenden:
class MyClassA {
private $bObject = null;
public __construct() {
// füge weiteren Code als Konstruktor ein
// falls du dies wünschst ;)
}
private _createBObject() {
$this->bObject = new MyClassB($this);
// du kannst hier weitere Modifikationen an
// dem bObject vornehmen
$this->bObject->doSomething();
}
public getBObject() {
// Wenn bObject noch nicht existiert, erstelle es
if($this->bObject == null) $this->_createBObject();
// gebe bObject zurück
return $this->bObject;
}
}
class MyClassB {
private $aObject = null;
// der erste Parameter muss ein MyClassA-Objekt sein!
public __construct(MyClassA $a) {
$this->aObject = $a;
}
public doSomething() {
// mache irgendetwas hier ;)
}
}
Fehler vorbehalten, habe das jetzt nur mal so spontan runtergeschrieben ;-)
Du könntest den Code dann z.B. so benutzen:
$a = new MyClassA();
$b = $a->getBObject();
Und schon hast du in $a und $b deine entsprechenden Objekte :-)
Viele Grüße,
~ Dennis.