Les arguments de fonction

Des informations peuvent être passées à une fonction en utilisant un tableau d ' arguments , dont chaque élément est séparé par une virgule . Un élément peut être une variable ou une constante .

PHP supporte le passage d' arguments par valeur (méthode par défaut ) , par référence . Les listes variables d ' arguments sont supportées par PHP 4 et les versions plus récentes . Voir liste variable d' arguments de fonction et les fonctions utiles que sont func_num_args( ) , func_get_arg( ) , et func_get_args( ) . Fonctionnellement , on peut arriver au même résultat en passant un tableau comme argument :

 
?php

 
function

 
takes_array(

 
$input

 
)

 
{

 
echo

 
"$input[0

 
]

 
+

 
$input[1

 
]

 
=

 
"

 
,

 
$input[0]+$input[1]

 
;

 
}

 
?





Passage d'arguments par référence

Par défaut , les arguments sont passés à la fonction par valeur ( donc vous pouvez changer la valeur d'un argument dans la fonction , cela ne change pas sa valeur à l'extérieur de la fonction ) . Si vous voulez que vos fonctions puissent changer la valeur des arguments , vous devez passer ces arguments par référence .

Si vous voulez qu' un argument soit toujours passé par référence , vous pouvez ajouter un ' ' devant l 'argument dans la déclaration de la fonction :

 
?php

 
function

 
add_some_extra(

 
$string

 
)

 
{

 
$string

 
.=

 
'

 
,

 
et

 
un

 
peu

 
plus

 
.'

 
;

 
}

 
$str

 
=

 
'Ceci

 
est

 
une

 
chaîne'

 
;

 
add_some_extra($str)

 
;

 
echo

 
$str

 
;

 
/

 
/

 
affiche

 
'Ceci

 
est

 
une

 
chaîne

 
,

 
et

 
un

 
peu

 
plus

 
.

 
'

 
?





Si vous souhaitez passer une variable par référence à une fonction mais de manière ponctuelle , vous pouvez ajouter un ' ' devant l'argument dans l 'appel de la fonction :

 
?php

 
function

 
foo

 
(

 
$bar

 
)

 
{

 
$bar

 
.=

 
'

 
,

 
et

 
un

 
peu

 
plus

 
.'

 
;

 
}

 
$str

 
=

 
Ceci

 
est

 
une

 
chaîne'

 
;

 
foo

 
($str)

 
;

 
echo

 
$str

 
;

 
/

 
/

 
affiche

 
'Ceci

 
est

 
une

 
chaîne

 
'

 
foo

 
(

 
$str)

 
;

 
echo

 
$str

 
;

 
/

 
/

 
affiche

 
'Ceci

 
est

 
une

 
chaîne

 
,

 
et

 
un

 
peu

 
plus

 
.

 
'

 
?





Valeur par défaut des arguments

Vous pouvez définir comme en C+ + des valeurs par défaut pour les arguments de type scalaire :

 
?php

 
function

 
servir_apero

 
(

 
$type

 
=

 
"ricard"

 
)

 
{

 
return

 
"Servir

 
un

 
verre

 
de

 
$type.\n"

 
;

 
}

 
echo

 
servir_apero()

 
;

 
echo

 
servir_apero("whisky")

 
;

 
?





La fonction ci-dessus affichera :

 
Servir

 
un

 
verre

 
de

 
ricard

 
.




 
Servir

 
un

 
verre

 
de

 
whisky

 
.





La valeur par défaut d ' un argument doit obligatoirement être une constante , et ne peut être ni une variable , ni un membre de classe .

Il est à noter que si vous utilisez des arguments avec valeur par défaut avec d ' autres sans valeur par défaut , les premiers doivent être placés à la suite de tous les paramètres sans valeur par défaut . Sinon , cela ne fonctionnera pas . Considérons le code suivant :

 
?php

 
function

 
faireunyaourt

 
(

 
$type

 
=

 
"acidophilus"

 
,

 
$flavour

 
)

 
{

 
return

 
"Préparer

 
un

 
bol

 
de

 
$type

 
$flavour.\n"

 
;

 
}

 
echo

 
faireunyaourt

 
("framboise")

 
;

 
/

 
/

 
ne

 
fonctionne

 
pas

 
comme

 
voulu

 
?





L ' affiche du code ci-dessus est le suivant :





 
Missing

 
argument

 
2

 
in

 
call

 
to

 
faireunyaourt(

 
)

 
in

 
/

 
usr

 
/

 
local

 
/

 
etc

 
/

 
httpd

 
/

 
htdocs

 
/

 
PHP

 
3test

 
/

 
functest.html

 
on

 
line

 
41

 
Préparer

 
un

 
bol

 
de

 
framboise

 
.





Maintenant comparons l' exemple précédent avec l 'exemple suivant :

 
?php

 
function

 
faireunyaourt

 
(

 
$flavour

 
,

 
$type

 
=

 
"acidophilus"

 
)

 
{

 
return

 
"Préparer

 
un

 
bol

 
de

 
$type

 
$flavour.\n"

 
;

 
}

 
echo

 
faireunyaourt

 
("framboise")

 
;

 
/

 
/

 
fonctionne

 
comme

 
voulu

 
?





L ' affichage de cet exemple est le suivant :

 
Préparer

 
un

 
bol

 
de

 
acidophilus

 
framboise

 
.





Nombre d'arguments variable

PHP 4 supporte les fonctions à nombre d ' arguments variable . C' est très simple à utiliser , avec les fonctions func_num_args( ) , func_get_arg( ) , et func_get_args( ) .

Aucune syntaxe particulière n' est nécessaire , et la liste d 'argument doit toujours être fournie explicitement avec la définition de la fonction , et se comportera normalement .