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 ( ) :

 
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 :





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