Parameterübergabe per Referenz
Man kann Variablen an Funktionen per Referenz übergeben, so dass die Funktion die Variable modifizieren kann. Dazu benutzt man folgende Syntax:
<?php
function foo(&$var)
{
$var++;
}
$a=5;
foo($a);
// $a ist 6
?>
Hinweis: Zu beachten ist, dass beim Funktionsaufruf kein Referenz-Zeichen steht, sondern nur in der Funktionsdefinition. Diese allein ist ausreichend, um das Argument per Referenz zu übergeben.
Folgende Dinge können per Referenz übergeben werden:
-
Variablen, zum Beispiel
foo($a)
-
Referenzen, zurückgegeben von einer Funktion, zum Beispiel:
<?php
function foo(&$var)
{
$var++;
}
function &bar()
{
$a = 5;
return $a;
}
foo(bar());
?>
Alle anderen Ausdrücke sollten nicht per Referenz übergeben werden, da das Ergebnis undefiniert ist. Folgende Beispiele sind etwa ungültig:
<?php
function foo(&$var)
{
$var++;
}
function bar() // Beachte das fehlende &
{
$a = 5;
return $a;
}
foo(bar()); // Erzeugt einen Hinweis
foo($a = 5); // Ausdruck, nicht Variable
foo(5); // Erzeugt einen fatalen Fehler
class Foobar
{
}
foo(new Foobar()) // Erzeugt einen Hinweis von PHP 7.0.7 an
// Hinweis: Nur Variablen sollten als Referenz übergeben werden
?>