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:
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 (&):
Implicitní hodnoty argumentů
Funkce může ve stylu C++ definovat implicitní hodnoty pro skalární
argumenty takto:
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:
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:
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ě.