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 weisen wir der Eigenschaft des von der Funktion
getValue zurückgegebenen Objekts einen Wert zu, und
nicht seiner Kopie, wie es der Fall wäre, wenn wir nicht die
Referenzsyntax verwendet hätten.
Hinweis:
Im Gegensatz zur Parameterübergabe ist hier an beiden Stellen die Angabe
des &
notwendig. Dies zeigt an, dass Sie eine
Referenz und keine Kopie zurückgeben. Ebenfalls wird angezeigt, dass für
$myValue im Gegensatz zur normalen Zuweisung eine
Referenzbindung durchgeführt werden soll.
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.
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 funktioniert; es erzeugt einen fatalen Fehler.