Argumenti funkcij

Informacije funkciji so lahko podane kot spisek argumentov, kar je z vejico razdeljen spisek spremenljivk in/ali konstant.

PHP podpira podajanje argumentov po vrednosti (privzeto), po referenci in privzete vrednosti argumentov. Poljubno število argumentov podpirajo PHP verzije 4 ali več; poglejte si poljubno število argumentov in reference funkcij func_num_args(), func_get_arg() in func_get_args() za več informacij. Podoben efekt lahko dosežemo v PHP 3, če pošljemo polje kot argument funkciji:

function takes_array($input)
{
    echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}

Podajanje argumentov po referenci

Privzeto se argumenti funkcij podajajo po vrednosti (torej, če spremenite vrednost argumenta v funkciji, se vrednost ne spremeni zunaj funkcije). Če želite funkciji dovoliti, da spreminja svoje argumente, morate argumente podati po referenci.

Če želimo da je argument funkcije vedno podan po referenci, moramo dodati 'in' znak (&) pred ime argumenta v definiciji funkcije:

function add_some_extra(&$string)
{
    $string .= 'dodaj k nizu.';
}
$str = 'To je niz, ';
add_some_extra($str);
echo $str;    // izpise 'To je niz, dodaj k nizu'

Privzete vrednosti argumentov

Funkcija lahko definira privzete vrednost za skalarne vrednosti, kot se to da v C++:

function makecoffee ($type = "cappuccino")
{
    return "Tip kave: $type.\n";
}
echo makecoffee ();
echo makecoffee ("espresso");

Izpis zgornjega primera je:
Tip kave: cappuccino.
Tip kave: espresso.

Privzeta vrednost mora biti konstantni izraz in ne (naprimer) spremenljivka ali član razreda.

Zapomnite si, da morajo biti privzeti argumenti desno od tistih ne-privzetih argumentov; sicer stvari ne bodo potekale kot bi pričakovali. Poglejte si naslednji pirmer:

function makeyogurt ($type = "acidophilus", $flavour)
{
    return "Naredi posodo $type $flavour.\n";
}

echo makeyogurt ("raspberry");   // ne bo delalo kot bi si zeleli

Ta primer bi izpisal:
Warning: Missing argument 2 in call to makeyogurt() in 
/usr/local/etc/httpd/htdocs/php3test/functest.html on line 41
Naredi posodo raspberry .

Zdaj pa primerjajte zgornji primer z naslednjim:

function makeyogurt ($flavour, $type = "acidophilus")
{
    return "Naredi posodo $type $flavour.\n";
}

echo makeyogurt ("raspberry");   // dela kot pricakujemo

Ta primer bi izpisal:
Naredi posodo acidophilus raspberry.

Poljubno število argumentov

PHP 4 podpira poljubno število argumentov v uporabniških funkcijah. Stvar je dosti enostavna z uporabo func_num_args(), func_get_arg() in func_get_args() funkcij.

Ni potrebna nobena posebna sintaksa in argumenti so še vedno lahko izrecno podani z definicijo funkcije in se bodo obnašali normalno.