Referenzen zurückgeben
Das Zurückgeben von Ergebnissen per Referenz aus Funktionen
heraus kann manchmal recht nützlich sein, um herauszufinden, an welche
Variable eine Referenz gebunden werden soll. Man sollte diese Funktionalität
nicht aus Performancegründen benutzen, der Kern
ist intelligent genug, um dies selbst zu optimieren. Man sollte Referenzen
nur dann zurückgeben, wenn man sinnvolle technische Gründe hat. Hierbei
ist folgende Syntax zu verwenden:
In diesem Beispiel wird also die Eigenschaft des von
getValue gelieferten Objektes gesetzt, nicht die der Kopie,
wie es der Fall wäre, wenn die Funktion
getValue
ihr Ergebnis nicht per Referenz liefern würde.
Hinweis:
Im Gegensatz zur Parameterübergabe per Referenz ist bei der
Rückgabe mittels Referenz an beiden Stellen die Angabe des
&
notwendig. Dies zeigt an, dass Sie eine
Referenz und nicht wie gewöhnlich eine Kopie zurückgeben. Ebenfalls wird
angezeit, dass für $myValue im Gegensatz zur
normalen Zuweisung eine Referenzbindung durchgeführt wird.
Hinweis:
Wenn man versucht, eine Referenz aus einer Funktion mit der Syntax
return ($this->value);
zurückzugeben, wird das
nicht funktionieren, weil man versucht, das
Ergebnis eines Ausdrucks zurückzugeben und nicht
eine Variable per Referenz. Man kann nur Variablen per Referenz aus
einer Funktion zurückgeben - sonst nichts.
Seit PHP 5.1.0 wird ein E_NOTICE
-Fehler
erzeugt, wenn versucht wird, einen dynamischen Ausdruck oder das Ergebnis
eines new
-Operators zurückzugeben.
Um die zurückgegebene Referenz zu verwenden, muss Referenzzuweisung benutzt
werden:
Um die zurückgegebene Referenz an eine andere Funktion zu übergeben, die eine
Referenz erwartet, kann diese Syntax verwendet werden:
Hinweis:
Es ist zu beachten, dass array_push(&collector(), 'foo');
nicht möglich ist; es erzeugt einen fatalen Fehler.