Les arguments de fonction

Des informations peuvent �tre pass�es � une fonction en utilisant une liste d'arguments, dont chaque expression est s�par�e par une virgule.

PHP supporte le passage d'arguments par valeur (comportement par d�faut), le passage par r�f�rence, et des valeurs d'arguments par d�faut. Une liste variable d'arguments est �galement support�e, voir la documentation sur les fonctions func_num_args(), func_get_arg(), et func_get_args() pour plus d'informations.

Exemple #1 Nombre variable d'argument sous forme de tableau

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

takes_array(array(2,3));
?>

L'exemple ci-dessus va afficher :

2 + 3 = 5

Passage d'arguments par r�f�rence

Par d�faut, les arguments sont pass�s � la fonction par valeur (Ainsi changer la valeur d'un argument dans la fonction 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 :

Exemple #2 Passage d'arguments par r�f�rence

<?php
function add_some_extra(&$string)
{
    
$string .= ', et un peu plus.';
}
$str 'Ceci est une cha�ne';
add_some_extra($str);
echo 
$str;  
?>

L'exemple ci-dessus va afficher :

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 :

Exemple #3 Valeur par d�faut des arguments de fonctions

<?php
function servir_cafe ($type "cappuccino")
{
    return 
"Servir un $type.\n";
}
echo 
servir_cafe();
echo 
servir_cafe(null);
echo 
servir_cafe("espresso");
?>

L'exemple ci-dessus va afficher :

Servir un cappuccino.
Servir un.
Servir un espresso.

PHP vous autorise � utiliser des tableau ainsi que le type sp�cial NULL comme valeur par d�faut, par exemple :

Exemple #4 Utilisation de type non scalaire comme valeur par d�faut

<?php
function servir_cafe($types = array("cappuccino"), $coffeeMaker NULL)
{
    
$device is_null($coffeeMaker) ? "les mains" $coffeeMaker;
    return 
"Pr�paration d'une tasse de ".join(", "$types)." avec $device.\n";
}
echo 
servir_cafe();
echo 
servir_cafe(array("cappuccino""lavazza"), "une cafeti�re");
?>

L'exemple ci-dessus va afficher :

Pr�paration d'une tasse de cappuccino avec les mains.
Pr�paration d'une tasse de cappuccino, lavazza avec une cafeti�re.

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, ni un appel de fonction.

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 :

Exemple #5 Les arguments � valeur par d�faut doivent �tre en premier : erreur

<?php
function faireunyaourt ($type "acidophilus"$flavour)
{
    return 
"Pr�parer un bol de $type $flavour.\n";
}
 
echo 
faireunyaourt("framboise");   // ne fonctionne pas comme voulu
?>

L'exemple ci-dessus va afficher :

PHP Warning:  Missing argument 2 for faireunyaourt(), called on line 2

Warning: Missing argument 2 for faireunyaourt(), called on line 2
Pr�parer un bol de framboise .

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

Exemple #6 Les arguments � valeur par d�faut doivent �tre en premier : valide

<?php
function faireunyaourt ($flavour$type "acidophilus")
{
    return 
"Pr�parer un bol de $type $flavour.\n";
}
 
echo 
faireunyaourt ("framboise");   // fonctionne comme voulu
?>

L'exemple ci-dessus va afficher :

Pr�parer un bol de acidophilus framboise.

Note: Depuis PHP 5, les valeurs par d�faut peuvent �tre pass�es par r�f�rence.

Nombre d'arguments variable

PHP 4 et suivants supportent 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.