Dereferenzierung von Objekten in PHP 5

Um ein Objekt anzusprechen, das die Instanz eines anderen Objekts ist, war bislang ein Zwischenschritt über eine temporäre Variable notwendig. Hier sehen Sie ein Beispiel dazu:

<?php

// Beispiel OOP

// Dereferenzierung

class Person{

   var $Name;

   var $Vater;

   var $Mutter;

  

   function __construct($ParamName){

      $this->Name = $ParamName;

   }

}

// Verwandtschaftliche Beziehungen definieren

$objGrandpa = new Person(‘Abe’);

$objDad = new Person(‘Homer’);

$objDad->Vater = $objGrandpa;

$objBart = new Person(‘Bart’);

$objBart->Vater = $objDad;

// Name von Barts Großvater mit

// dem Mitteln von PHP4 ermitteln

$objTmp1 = $objBart->Vater;

$objTmp2 = $objTmp1->Vater;

echo “Barts Opa heisst ” . $objTmp2->Name;

// nun mit Dereferenzierung

echo “Barts Opa heisst ” . $objBart->Vater->Vater->Name;

?>

Mit PHP 5 lässt sich der gesuchte Name mit einem einzigen Ausdruck und ohne Umwege ermitteln, weshalb die letzte Zeile Code genügt. Dieses Hangeln von einem Objekt zum anderen mag in manchen Fällen wie unnötig aufgebläht aussehen. Sie müssen sich dabei aber immer vor Augen halten, dass Sie somit auf temporäre Variablen verzichten können und dass bei vernünftiger Anlage der Objektmodellierung der Code dabei auch die echten Beziehungen der Objekte untereinander ausdrückt. So heißt der Ausdruck

$objBart->Vater->Vater->Name

ja – zugegebenermaßen in holprigem Deutsch – nichts anderes als: “von Barts Vater, der Vater, der Name”. Bei der auf PHP 4 basierende Variante muss man schon genauer hinsehen, um die Wirkung zu erkennen.

Das Konzept funktioniert nicht nur mit Instanzvariablen, sondern auch mit Methoden – sofern diese Objektreferenzen als Rückgabewert liefern. Damit sind Konstrukte möglich wie

echo “Das erste Auto hat die Farbe” .

objAutosammlung->getErstesAuto()->strFarbe;

Ähnliche Beiträge