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í.

Share