Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Neuerungen in PHP 5  Teil von  OOP und PHP 5
Letztes Update: 04.09.2007 20:49:50

Navigation

Seite Startseite
Seite Aktuelles
Seite Seite News*
Seite Seite Pressemitteilungen*
Seite SELFPHP
Seite Seite Über SELFPHP
Seite Seite Werbung
Seite Seite Kontakt
Seite Seite Unsere Banner
Seite Seite Impressum
Seite Qozido
Seite Seite Diving Edition
Seite Seite Snorkeling Edition
Seite SELFPHP Dokumentation
Seite Seite PHP-Skripte
Seite Seite PHP Befehlsreferenz
Seite Seite PHP 5 Praxisbuch
Seite Seite PHP Code Snippets
Seite Seite SELFPHP in Buchform
Seite Anbieterverzeichnis
Seite Seite Globale Branchen
Seite Seite Webhosting/Server
Seite Services
Seite Seite Forum*
Seite Seite RSS-Feeds*
Seite Seite Downloads*
Seite Seite Gratis-Video-Lektionen*
Seite Seite SELFPHP auf Heft-CD*
Seite Seite Newsletter*
Seite Internet Security
 sponsored by  
Seite Stellenangebote*
Sedo - Bei uns wird PHP großgeschrieben
Seite Premium-Partner   
Webhosting/Serverlösungen
Seite Produktempfehlung   
Seite Seite SteadyBackup

 
* Link führt ins Internet


Anbieterverzeichnis
Informieren Sie sich über die Unternehmen in unserem Anbieterverzeichnis!  
 


SELFPHP Forum
Fragen rund um die Themen PHP? In über 100.000 Beiträgen finden Sie sicher die passende Antwort!*  


Newsletter
Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!*

Vorname: 
Name:
E-Mail:
 




 

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



 




 sponsored by

Sedo - Bei uns wird PHP großgeschrieben


VERIO - An NTT Communications Company


HighText iBusiness


Webspace-Verkauf.de


video2brain




 Premium-Partner
 Webhosting/Serverlösungen

BPI-Systeme


Premium-Partner Pixel X


Premium-Partner First Colo


Premium-Partner dogado Internet




Qozido


© 2001-2008 E-Mail SELFPHP - Damir Enseleit, info@selfphp.deImpressumKontakt