Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Neuerungen in PHP 5  Teil von  OOP und PHP 5
Professional CronJob-Service

Suche

:: Anbieterverzeichnis ::

Globale Branchen

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

 

:: SELFPHP Forum ::

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

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 
 
Dereferenzierung von Objekten

SELFPHP ist Shopware Solution Partner
Shopware ist ein vielfach ausgezeichnetes Onlineshop-System der shopware AG, das auf PHP. Zend Framework und SQL basiert.
SELFPHP unterstützt Sie als Shopware Solution Partner bei der Konzeption, Programmierung und Realisierung Ihres Onlineshops und passt Shopware bei Bedarf an Ihre Unternehmensbedürfnisse an. Weitere Informationen



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




Ausnahmebehandlung
 




:: Premium-Partner ::

Webhosting/Serverlösungen

PSW GROUP GmbH & Co. KG weitere Premium-Partner
 

:: SELFPHP Sponsor ::

ionCube Ltd. weitere Sponsoren
 


:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Webhosting/Serverlösungen

Suchen Sie den für Sie passenden IT-Dienstleister für Ihr Webhosting-Paket oder Ihre Serverlösung?

Sie sind nur ein paar Klicks davon entfernt!


 

Ausgewählter Tipp im Bereich PHP-Skripte


Verzeichnis rekursiv kopieren

Weitere interessante Beispiele aus dem SELFPHP Kochbuch finden Sie im Bereich PHP-Skripte
 

SELFPHP Code Snippet


AJAX-Request erkennen

Weitere interessante Code Snippets finden Sie auf SELFPHP im Bereich PHP Code Snippets
 
© 2001-2024 E-Mail SELFPHP Inh. Damir Enseleit, info@selfphp.deImpressumKontakt
© 2005-2024 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de