Manuel PHP
Précédent | Chapitre 12. Les fonctions | Suivant

# 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 :

    Warning: 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.

Précédent | Sommaire | Suivant
Les fonctions | Niveau supérieur | Les valeurs de retour