php.de

Zurück   php.de > PHP.de Wiki

Kategorien

Referenz

Aus PHP.de Wiki

Wechseln zu:Navigation, Suche

Eine Referenz stellt einen Verweis auf eine Speicherstelle dar, in der der Wert einer bereits initialisierten Variablen abgelegt wurde. Dabei übt sie praktisch die Funktion eines Aliasnamens für eine bereits existente Variable aus. Referenzen können auch namensraumübergreifend eingesetzt werden.

Variablen und Referenzen

Eine Variable ist nur ein Bezeichner für eine Speicherstelle, in der ein Wert abgelegt wurde. Die Variable enthält also selbst keinen Wert, sondern verweist nur auf eine Adresse im Arbeitsspeicher. Erstellt man nun eine Referenz, so ist dies nichts anderes, als einen weiteren Bezeichner für dieselbe Speicheradresse zu erstellen. Es existieren fortan zwei Variablen mit demselben Ziel. Eine Referenz erstellt man mit dem Referenzierungsoperator &.

Ein Beispiel zeigt den Unterschied zwischen einer normalen Wertzuweisung und einer Referenzierung:

// normale Zuweisung:
$var1 = 5;
$var2 = $var1;
$var2 = 6;
print $var1 . ' - ' . $var2 . '<br />';
 
// Referenzierung
$var1 = 5;
$var2 = &$var1;
$var2 = 6; print $var1 . ' - ' . $var2;
Die Ausgabe:
5 - 6
6 - 6

Man beachte den Referenzierungsoperator in der hervorgehobenen Zeile. Bei der ersten Zuweisung wird der Wert der Variablen $var1 in die Variable $var2 bzw. deren Speicherstelle kopiert. Die beiden Werte sind fortan unabhängig voneinander. Bei der zweiten Zuweisung handelt es sich nicht um die Übergabe eines Wertes, sondern um die Übergabe der Speicheradresse. $var1 und $var2 verweisen also auf dieselbe Speicheradresse. Eine Änderung an der einen Variablen wirkt sich unmittelbar auf die andere aus.

Will man eine Speicherstelle leeren, kann man ihr den Wert null zuweisen. Der Einsatz von unset() bewirkt lediglich, dass der Bezeichner gelöscht wird, nicht aber der Wert. Dieser ist weiterhin über andere Referenzen erreichbar:

$var = 5;
$ref = &$var;
 
// löscht nur $var, nicht aber den Wert und schon gar nicht $ref:
unset($var);
print $ref;
Die Ausgabe:
5

Referenzen auf nicht-initialisierte Variablen

Was passiert aber, wenn eine Referenz auf eine nicht existierende Variable übergeben wird? Die Referenz würde in dem Falle ins Leere verweisen. Für diesen Fall ist in PHP ein Schutzmechanismus eingebaut. Nicht-initialisierte Variablen werden automatisch mit null belegt.

$ref = &$var;
print is_null($var) ? 'is NULL' : 'is not NULL';
Die Ausgabe
is NULL

Es wird keine Notice ausgegeben, die Variable existiert.

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:24 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Powered by vbWiki Pro 1.3 RC5. Copyright ©2006-2007, NuHit, LLC

Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum