Utiliser des constantes comme valeurs de fonction par défaut en PHP
Question
Est-ce légal?
<?php
function ftw($foo = 'pwnage', $nub = MENU_DEFAULT_VALUE, $odp = ODP_DEFAULT_VALUE) {
//lots_of_awesome_code
}
?>
où MENU_DEFAULT_VALUE
et ODP_DEFAULT_VALUE
sont des constantes définies précédemment dans le fichier.
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