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 support le passage d'argument par valeur (méthode par défaut), par référence, et les valeurs par défaut des arguments. Une liste d'argument dont le nombre est variable ne fonctionne pas en PHP mais un résultat similaire peut être obtenu en utilisant un taleau.
function takes_array($input) { echo "$input[0] + $input[1] = ", $input[0]+$input[1]; }
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érieure de la fonction). Si vous voulez à aux fonctions de changer la valeur des arguments, vous devez passer ces arguements 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 :
function add_some_extra(&$string) { $string .= 'et du texte supplémentaire.'; } $str = 'Ceci est une phrase, '; add_some_extra($str); echo $str; // affiche 'Ceci est une phrase, et du texte supplémentaire.'
Si vous souhaitez passer une variable par référence à une fonction mais de manière ponctuel, vous pouvez ajouter un '&' devant l'artgument dans l'appel de la fonction:
function foo ($bar) { $bar .= 'et du texte en plus.'; } $str = 'Ceci est une phrase, '; foo ($str); echo $str; // affiche 'Ceci est une phrase, ' foo (&$str); echo $str; // affiche 'Ceci est une phrase, et du texte en plus.'
Vous pouvez définir comme en C++ des valeurs par défaut pour les arguments de type scalaire :
function makecoffee ($type = "cappucino") { return "Making a cup of $type.\n"; } echo makecoffee (); echo makecoffee ("espresso");
L'affiche de la fonction ci-dessus est :
Making a cup of cappucino. Making a cup of espresso.
La valeur par défaut d'un argument doit obligatoirement être une constante, et ni une variable ou un membre d'une classe.
En PHP 4.0, il est aussi possible de spécifier qu'un argument n'est pas affecté, (unset) comme argument par défaut. Cela signifie que l'argument ne sera pas affecté, si aucune valeur n'est passée comme argument.
Il est à noter que vous utilisez les arguments par défaut, la valeur par défaut doit se trouver du côté droit du signe '='; sinon, cela ne fonctionnera pas. Considérons le code suivant :
function makeyogurt ($type = "acidophilus", $flavour) { return "Making a bowl of $type $flavour.\n"; } echo makeyogurt ("raspberry"); // ne fonctionne pas correctement.
L'affiche du code ci-dessus est le suivant :
Warning: Missing argument 2 in call to makeyogurt() in /usr/local/etc/httpd/htdocs/php3test/functest.html on line 41 Making a bowl of raspberry .
Maintenant comparons l'exemple suivant avec l'exemple suivant :
function makeyogurt ($flavour, $type = "acidophilus") { return "Making a bowl of $type $flavour.\n"; } echo makeyogurt ("raspberry"); // fonctionne correctement.
L'affichage de cette exemple est le suivant :
Making a bowl of acidophilus raspberry.
![]() |
|
![]() |