Dennis: Objekte und Referenzen

Beitrag lesen

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.