PHP Portal » PHP Handbuch » Parameterübergabe per Referenz

Werbung

Parameterübergabe per Referenz


Man kann Variablen an Funktionen per Referenz übergeben, so dass die Funktion ihre Argumente modifizieren kann. Dazu benutzt man folgende Syntax:

PHP Code
1
2
3
4
5
6
7
function foo(&$var) { $var++; } $a=5; foo($a); // $a ist 6

Zu beachten ist, dass kein Referenz-Zeichen beim Funktionsaufruf steht, nur in der Funktionsdefinition. Diese allein ist ausreichend, um das Argument per Referenz zu übergeben. In neueren PHP-Versionen gibt es eine Warnung, dass die Benutzung von "Call-time pass-by-reference" mit Hilfe von & in foo(&$a); veraltet ist.

Folgende Dinge können per Referenz übergeben werden:

  • Variablen, zum Beispiel foo($a)
  • "New"-Ausdrücke, zum Beispiel foo(new foobar())
  • Referenzen, zurückgegeben von einer Funktion, zum Beispiel:

    PHP Code
    1
    2
    3
    4
    5
    6
    function &bar() { $a = 5; return $a; } foo(bar());

    Es gibt detailliertere Erläuterungen zur Rückgabe by-reference.

Alle anderen Ausdrücke sollte nicht per Referenz übergeben werden, da das Ergebnis undefiniert ist. Folgende Beispiele sind etwa ungültig:

PHP Code
1
2
3
4
5
6
7
8
function bar() // Beachte das fehlende & { $a = 5; return $a; } foo(bar()); // Fatal error seit PHP 5.0.5 foo($a = 5); // Ausdruck, keine Variable foo(5); // Fatal error

Diese Anforderungen gelten für PHP 4.0.4 und später.