Question

Est-ce légal?

<?php

function ftw($foo = 'pwnage', $nub = MENU_DEFAULT_VALUE, $odp = ODP_DEFAULT_VALUE) {
      //lots_of_awesome_code
}

?>

MENU_DEFAULT_VALUE et ODP_DEFAULT_VALUE sont des constantes définies précédemment dans le fichier.

Était-ce utile?

La solution

Oui, c'est légal.

De le manuel :

  

La valeur par défaut doit être une constante   expression, pas (par exemple) un   variable, un membre de la classe ou une fonction   appeler.

Les constantes s’adaptent parfaitement à cette facture.

Autres conseils

Dans un contexte de POO, vous pouvez également utiliser une constante de membre de classe comme valeur d'argument de méthode par défaut.

class MyClass
{
    const A = 1;

    public function __construct($arg = self::A)
    {
        echo $arg;
    }
}

pourquoi ne pas essayer?

Néanmoins, juste au cas où vous pouvez tester maintenant, le code suivant:

define('MENU_DEFAULT_VALUE', 10);
define('ODP_DEFAULT_VALUE', 'hello');

function ftw($foo = 'pwnage', $nub = MENU_DEFAULT_VALUE, $odp = ODP_DEFAULT_VALUE) {
    var_dump($foo);
    var_dump($nub);
    var_dump($odp);
}

ftw();

donne cette sortie:

string 'pwnage' (length=6)
int 10
string 'hello' (length=5)

Je dirais donc que oui, il est valide: -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top