199 votes

Comment créer des arguments facultatifs en php ?

Dans le manuel PHP, pour montrer la syntaxe des fonctions avec des paramètres optionnels, ils utilisent des parenthèses autour de chaque ensemble de paramètres optionnels dépendants. Par exemple, pour la fonction date() le manuel indique que la fonction est

string date ( string $format [, int $timestamp = time() ] )

$timestamp est un paramètre facultatif, et lorsqu'il est laissé vide, il prend par défaut la valeur de l'option time() la valeur de retour de la fonction.

Comment créer des paramètres facultatifs comme celui-ci lors de la définition d'une fonction personnalisée en PHP ?

269voto

Jeff Winkworth Points 1572

Comme dans le manuel, utilisez un signe égal ( = ) dans votre définition des paramètres :

function dosomething($var1, $var2, $var3 = 'somevalue'){
    // Rest of function here...
}

3 votes

function dosomething($var1, $var2, $optionalValue = null) J'ai trouvé cette meilleure option.

54voto

Ross Points 19037

La valeur par défaut de l'argument doit être une expression constante. Ce ne peut pas être une variable ou un appel de fonction.

Si toutefois vous avez besoin de cette fonctionnalité :

function foo($foo, $bar = false)
{
    if(!$bar)
    {
        $bar = $foo;
    }
}

En supposant que $bar n'est pas censé être un booléen, bien sûr.

1 votes

Cependant, ceci sera évalué si 0 ou "false" a été passé à $bar.

38 votes

Null est un bien meilleur défaut.

3 votes

@DooMMasteR, ici, vous voulez dire $bar === false - il s'agit d'une action qui doit être effectuée lorsque $bar a fait défaut à false . Cela évitera une action incorrecte si 0 est passée, donc cela fonctionne - SAUF si un booléen est nécessaire. Comme Kzqai l'a dit, une solution plus générale consiste à utiliser $bar = null car cela peut également être utilisé lorsque les valeurs de $bar sont booléennes. Le test devient alors if (is_null($bar)) o if ($bar === null) .

23voto

gregh Points 3053

Quelques notes que j'ai également trouvées utiles :

  • Conservez vos valeurs par défaut sur le côté droit.

    function whatever($var1, $var2, $var3="constant", $var4="another")
  • La valeur par défaut de l'argument doit être une expression constante. Ce ne peut pas être une variable ou un appel de fonction.

15voto

mk. Points 8276

Donner à l'argument optionnel une valeur par défaut.

function date ($format, $timestamp='') {
}

13voto

LayZee Points 167

La fonction de date serait définie de la manière suivante :

function date($format, $timestamp = null)
{
    if ($timestamp === null) {
        $timestamp = time();
    }

    // Format the timestamp according to $format
}

En général, vous mettez la valeur par défaut comme ceci :

function foo($required, $optional = 42)
{
    // This function can be passed one or more arguments
}

Cependant, seuls littéraux sont des arguments par défaut valides, c'est pourquoi j'ai utilisé null comme argument par défaut dans le premier exemple, no $timestamp = time() et l'a combiné avec une vérification de l'invalidité. Les littéraux comprennent les tableaux ( array() o [] ), les booléens, les nombres, les chaînes de caractères et les fichiers de données. null .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X