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:
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:
Funkcija lahko definira privzete vrednost za skalarne vrednosti, kot se to da v C++:
function makecoffee ($type = "cappuccino") |
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) |
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") |
Ta primer bi izpisal:
Naredi posodo acidophilus raspberry. |
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.