Argumenty funkcφ

Informace mohou b²t do funkcφ p°edßvßny p°es seznam argument∙, co╛ je seznam prom∞nn²ch a/nebo konstant odd∞len²ch Φßrkou.

PHP podporuje p°edßvßnφ argument∙ hodnotou (implicitnφ), p°edßvßnφ odkazem, a implicitnφ hodnoty argument∙. Prom∞nnß dΘlka seznamu argument∙ je podporovßna pouze v PHP 4 a pozd∞j╣φch; viz Seznam argument∙ prom∞nnΘ dΘlky a reference funkcφ func_num_args(), func_get_arg(), a func_get_args(). Podobn² efekt m∙╛e b²t v PHP 3 dosa╛en p°edßnφm pole argument∙ do funkce:

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

P°edßvßnφ argument∙ odkazem

Implicitn∞ jsou argumenty funkcφ p°edßvßny hodnotou (tak╛e kdy╛ zm∞nφte hodnotu argumentu ve funkci, nezm∞nφ se mimo funkci). Pokud chcete umo╛nit funkci modifikovat svΘ argumenty, musφte je p°edßvat odkazem.

Pokud chcete, aby byl argument do funkce p°edßvßn v╛dy odkazem, m∙╛ete p°ed nßzev argumentu v definici funkce p°ed°adit ampersand (&):

function add_some_extra(&$string)
{
    $string .= 'a n∞co navφc.';
}
$str = 'Toto je °et∞zec ';
add_some_extra($str);
echo $str;    // vypφ╣e 'Toto je °et∞zec a n∞co navφc.'

Implicitnφ hodnoty argument∙

Funkce m∙╛e ve stylu C++ definovat implicitnφ hodnoty pro skalßrnφ argumenty takto:

function makecoffee ($type = "cappucina")
{
    return "D∞lßm ╣ßlek $type.\n";
}
echo makecoffee ();
echo makecoffee ("espressa");

V²stupem v²╣e uvedenΘho k≤du je:
D∞lßm ╣ßlek cappucina.
D∞lßm ╣ßlek espressa.

Implicitnφ hodnota musφ b²t konstantnφ v²raz, ne (nap°φklad) prom∞nnß nebo polo╛ka t°φdy.

Uv∞domte si, ╛e kdy╛ pou╛φvßte implicitnφ argumenty, jakΘkoli implicitnφ hodnoty by m∞ly b²t na pravΘ stan∞ neimplicitnφho argumentu; jinak to nebude pracovat podle oΦekßvßnφ. Uva╛ujme tento kus k≤du:

function makeyogurt ($type = "acidophilus", $flavour)
{
    return "D∞lßm kelφmek jogurtu $type $flavour.\n";
}
 
echo makeyogurt ("malina");   // nebude pracovat podle oΦekßvßnφ

V²stupem uvedenΘho p°φkladu bude:
Warning: Missing argument 2 in call to makeyogurt() in 
/usr/local/etc/httpd/htdocs/php3test/functest.html on line 41
D∞lßm kelφmek jogurtu malina.

A nynφ to porovnejme s tφmto:

function makeyogurt ($flavour, $type = "acidophilus")
{
    return "D∞lßm kelφmek jogurtu $type $flavour.\n";
}
 
echo makeyogurt ("malina");   // pracuje podle oΦekßvßnφ

P°φklad vytiskne:
D∞lßm kelφmek jogurtu acidophilus malina.

Seznam argument∙ prom∞nnΘ dΘlky

PHP 4 mß podporu pro seznam argument∙ prom∞nnΘ dΘlky v u╛ivatelsk²ch funkcφch. Je to opravdu jednoduchΘ, pou╛itφm funkcφ func_num_args(), func_get_arg(), a func_get_args().

Nenφ t°eba ╛ßdnß zvlß╣tnφ syntaxe, seznam argument∙ m∙╛e b²t stßle explicitn∞ poskytovßn definicemi funkcφ a bude se chovat jako normßln∞.