PHP umožňuje nastavit výchozí hodnotu pro parametr do funkce(nebo metody). Zápis:
1 | function foo($param=20) |
způsobí že po zavolání funkce bez předaného parametru
1 | foo(); |
bude ve funkci mít proměnná $param hodnotu 20.
Toto ovšem nebude fungovat v případě, že se zavolá funkce např. takto:
1 | foo(null); |
Parametr se předá, ovšem obsahuje null, což bude obsahovat i $param.
Ukázka situací, jak záleží na pořadí při předávání parametrů do funkce:
Zde se naplní první parametr(ne až druhý):
1 2 3 4 5 | function foo($param1=10,$param2){ echo "$param1: ".$param1."<br />"; echo "$param2: ".$param2."<br />"; } foo(20); |
vrátí:
$param1: 20
$param2:
Zde je vidět že při volání s jedním parametrem se druhý doplní jeho výchozí hodnotou:
1 2 3 4 5 | function foo2($param1,$param2=20){ echo "$param1: ".$param1."<br />"; echo "$param2: ".$param2."<br />"; } foo2(10); |
vrátí:
$param1: 10
$param2: 20
V tomto volání se do $param1 předá null. Není tedy brána výchozí hodnota 10.
1 2 3 4 5 | function foo3($param1=10,$param2){ echo "$param1: ".$param1."<br />"; echo "$param2: ".$param2."<br />"; } foo3(null,20); |
vrátí:
$param1:
$param2: 20
Výsledkem je tedy to, že parametry s výchozí hodnotou by vždy měli být v posloupnosti psány až za parametry, které výchozí hodnotu neobsahují.