:: 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!
:: Qozido ::
Die Bilderverwaltung mit Logbuch für
Taucher und Schnorchler.
|
|
Objekte – Referenzen und Kopien |
Das Sprachverhalten der Zend Engine sah es bisher vor, beim Anlegen oder bei der Übergabe von Objektinstanzen nicht das eigentliche Objekt zu übergeben, sondern lediglich eine Kopie davon, so wie man es von Variablen kennt. Dieses Verhalten wird als copy by value bezeichnet und sorgte oft für Verwirrung. Die eigentliche Problematik liegt darin, dass etwaige Änderungen der Eigenschaften des Objekts sich nicht auf das Objekt selbst auswirken würden, sondern auf die Kopie des Objekts. Um tatsächlich nur eine Referenz auf das Objekt anzuwenden, konnte man sich nur mit der expliziten Deklarierung des &new-Operators behelfen.
Die künftige Verhaltensweise und Umgangsweise von Objekten orientiert sich strikt an Hochsprachen wie Java. Dort wird eine Objektinstanz mit einem object handle referenziert (by reference) und dieses Handle bezieht sich in allen Aktionen auf das Ursprungsobjekt. Der große Vorteil dabei ist, dass PHP 5 dies implizit erledigt, was nicht nur eleganter und flexibler ist, sondern auch spürbar die Performance steigert. Der konsequente Wechsel zum object by reference-Paradigma bietet aber auch Vorteile beim Umgang in puncto Usability und Semantik, wodurch Features wie Destruktoren und Dereferenzierung profitieren.
<?php
class Fahrzeug
{
function __construct($typ)
{
$this->name = $typ;
}
function ProduziereFahrzeug($obj, $name)
{
$obj->name = $name;
}
}
$mobil = new Fahrzeug("PKW");
$mobil->ProduziereFahrzeug($mobil, "LKW");
// Ausgabe – LKW
echo $mobil->name;
?>
|
|
|
|
|
|