Mit einer Parameterliste kann man Informationen an eine Funktion übergeben. Die Parameterliste ist eine durch Kommas getrennte Liste von Ausdrücken.
PHP unterstützt die Weitergabe von Parametern als Werte (das ist der Standard), als Verweise und als Vorgabewerte. Eine variable Anzahl von Parametern wird ebenfalls unterstützt, siehe auch die Funktionsreferenzen für func_num_args(), func_get_arg() und func_get_args() für weitere Informationen.
Beispiel #1 Arrays an Funktionen übergeben
<?php
function rechne_array($eingabe)
{
echo "$eingabe[0] + $eingabe[1] = ", $eingabe[0]+$eingabe[1];
}
?>
Normalerweise werden den Funktionen Werte als Parameter übermittelt. Wenn man den Wert dieses Parameters innerhalb der Funktion ändert, bleibt der Parameter außerhalb der Funktion unverändert. Wollen Sie aber erreichen, dass die Änderung auch außerhalb der Funktion sichtbar wird, müssen Sie die Parameter als Verweise (Referenzen) übergeben.
Wenn eine Funktion einen Parameter generell als Verweis behandeln soll, setzt man in der Funktionsdefinition ein kaufmännisches Und (&) vor den Parameternamen:
Beispiel #2 Übergeben von Funktionsparametern als Verweis
<?php
function fuege_etwas_anderes_an (&$string)
{
$string .= 'und nun zu etwas anderem.';
}
$str = 'Dies ist ein String, ';
fuege_etwas_anderes_an ($str);
echo $str; // Ausgabe: 'Dies ist ein String, und nun zu etwas anderem.'
?>
Eine Funktion kann C++-artige Vorgabewerte für skalare Parameter wie folgt definieren:
Beispiel #3 Einsatz von Vorgabeparametern
<?php
function machkaffee ($typ = "Cappucino")
{
return "Ich mache eine Tasse $typ.\n";
}
echo machkaffee ();
echo machkaffee (null);
echo machkaffee ("Espresso");
?>
Die Ausgabe von diesem kleinen Skript ist:
PHP gestattet es, Arrays und den speziellen Typ NULL
als
Vorgabewert zu nutzen, zum Beispiel:
Beispiel #4 Nichtskalare Typen als Vorgabewert
<?php
function makecoffee ($types = array("cappuccino"), $coffeeMaker = NULL)
{
$device = is_null($coffeeMaker) ? "hands" : $coffeeMaker;
return "Ich mache eine Tasse ".join(", ", $types)." mit $device.\n";
}
echo makecoffee ();
echo makecoffee (array("cappuccino", "lavazza"), "teapot");
?>
Der Vorgabewert muss ein konstanter Ausdruck sein, darf also zum Beispiel keine Variable, Eigenschaft einer Klasse oder ein Funktionsaufruf sein.
Bitte beachten Sie, dass alle Parameter mit Vorgabewert rechts von den Parametern ohne Vorgabewert stehen müssen - sonst wird es nicht funktionieren. Betrachten Sie folgendes Beispiel:
Beispiel #5 Ungültige Anwendung von Vorgabewerten
<?php
function mach_joghurt ($typ = "rechtsdrehendes", $geschmack)
{
return "Mache einen Becher $typ $geschmack-joghurt.\n";
}
echo mach_joghurt ("Brombeer"); // arbeitet nicht wie erwartet
?>
Die Ausgabe dieses Beispiels ist:
Nun vergleichen Sie bitte oberes Beispiel mit folgendem:
Beispiel #6 Richtiger Einsatz von Vorgabewerten
<?php
function mach_joghurt ($geschmack, $typ = "rechtsdrehendes")
{
return "Mache einen Becher $typ $geschmack-Joghurt.\n";
}
echo mach_joghurt ("Brombeer"); // arbeitet wie erwartet.
?>
... und jetzt ist die Ausgabe:
Hinweis: Das Setzen von Standardwerten für Argumente, die als Referenz übergeben werden ("passed by reference") wird seit PHP 5 unterstützt.
Beginnend mit PHP 4 wird eine variable Anzahl von Parametern in benutzerdefinierten Funktionen unterstützt. Das Handling dieser Parameter fällt mittels der Funktionen func_num_args(), func_get_arg() und func_get_args() sehr leicht.
Es ist keine spezielle Syntax erforderlich. Die Parameter können wie gehabt explizit in den Funktionsdeklarationen angegeben werden und werden sich wie gewohnt verhalten.