Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Neuerungen in PHP 5  Teil von  OOP und PHP 5
  +++ SELFPHP CronJob-Service :: Jetzt auch als Professional-Version verfügbar! +++



:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: SELFPHP Forum ::

Fragen rund um die Themen PHP? In über 120.000 Beiträgen finden Sie sicher die passende Antwort!  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

:: Qozido ::

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.   

 
 
Dereferenzierung von Objekten




Bei der Dereferenzierung von Objekten ist es grundsätzlich möglich, aus einer Funktion heraus ein Objekt zurückzugeben, welches ohne Instanz auskommt und trotzdem den Aufruf von Klassenmethoden des zurückgegebenen Objekts im globalen Namensraum erlaubt.


Funktionsweise der Dereferenzierung von Objekten

Um ein Objekt anzusprechen, welches die Instanz eines anderen Objekts ist, war bislang ein Zwischenschritt über eine temporäre Variable notwendig. Mit PHP 5 lässt sich der gesuchte Name mit einem einzigen Ausdruck und ohne Umwege ermitteln.

Beispiel

<?php

// Klassendefinition
class Person
{
  var $Name;
  var $Vater;
  var $Mutter;

  function __construct($wert){
    $this->Name = $wert;
  }
}

// Verwandtschaftliche Beziehungen definieren
$objOpa = new Person('Armin');
$objVater = new Person('Wendelinus');
$objVater->Vater = $objOpa;
$objMatze = new Person('Matze');
$objMatze->Vater = $objVater;

// Name von Matthias Opa – PHP 4-Variante
$objTemp1 = $objMatze->Vater;
$objTemp2 = $objTemp1->Vater;
echo "Matzes Opa heisst " . $objTemp2->Name;

// PHP 5 mit Objekt-Dereferenzierung
echo "Matzes Opa heisst " . $objMatze->Vater->Vater->Name;
?>

Diese Verknüpfungskette, an der man sich von einem Objekt zum nächsten entlangbewegt, mag unnötig aufgebläht erscheinen. Sie müssen sich dabei jedoch immer vor Augen halten, dass Sie somit auf temporäre Variablen verzichten können und dass bei vernünftiger Objektmodellierung der Code dabei auch die echten Beziehungen der Objekte untereinander ausdrückt. So kann der Ausdruck $objMatze->Vater->Vater->Name wie folgt übersetzt werden: »von Matzes Vater, der Vater, der Name«. Bei der auf PHP 4 basierenden Variante muss man schon genauer hinsehen, um die Beziehungen zu erkennen.

Das Prinzip funktioniert nicht nur mit Instanzvariablen, sondern auch mit Methoden – sofern diese Objektreferenzen als Rückgabewert liefern. Damit sind Konstrukte möglich wie:
objKleiderSammllung->getHochzeitsKleid()->strFarbe;
"Das Hochzeits Kleid hat die Farbe..."

Beispiel – Vertiefung Objekt-Dereferenzierung

<?php

class PKW
{
  protected $name = "";
  
  function __construct($typ)
  {
    $this->name = $typ;
  }
  
  function Bauen()
  {
    echo $this->name . " bauen\n";
  }
}

class Motorrad
{
  protected $name = "";
  
  function __construct($typ)
  {
    $this->name = $typ;
  }
  
  function Bauen()
  {
    echo $this->name . " bauen\n";
  }
}

function Produzieren($obj, $name)
{
  switch ($obj)
  {
    case "PKW":
      return new PKW($name);
    case "Motorrad":
      return new Motorrad($name);
  }
  return new PKW($name);
}

Produzieren("PKW", "Mini")->Bauen();
Produzieren("Motorrad", "Kawasaki")->Bauen();

?>

Ausgabe
Mini bauen
Kawasaki bauen



 




:: Premium-Partner ::

Webhosting/Serverlösungen


Premium-Partner MECO Systemhaus GmbH & Co. KG
Premium-Partner PSW GROUP GmbH & Co. KG
Premium-Partner BPI-Systeme
Premium-Partner Pixel X
Premium-Partner
 

:: SELFPHP Sponsoren ::


Microsoft Deutschland GmbH
twosteps.net - ...Premium-Webhosting
Sedo - Bei uns wird PHP großgeschrieben
hostfactory.ch - OptimaNet Schweiz AG
ZEND - The PHP Company
Kaspersky Labs
HighText iBusiness
SELFPHP Sponsoren
 

Qozido


© 2001-2009 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt