Uso delle costanti come valori di funzione predefiniti in PHP
Domanda
È legale?
<?php
function ftw($foo = 'pwnage', $nub = MENU_DEFAULT_VALUE, $odp = ODP_DEFAULT_VALUE) {
//lots_of_awesome_code
}
?>
dove MENU_DEFAULT_VALUE
e ODP_DEFAULT_VALUE
sono costanti definite in precedenza nel file.
Soluzione
Sì, è legale.
Da il manuale :
Il valore predefinito deve essere una costante espressione, non (ad esempio) a variabile, un membro della classe o una funzione chiamare.
Le costanti si adattano perfettamente a quel conto.
Altri suggerimenti
In un contesto OOP, è anche possibile utilizzare una costante membro della classe come valore di argomento del metodo predefinito.
class MyClass
{
const A = 1;
public function __construct($arg = self::A)
{
echo $arg;
}
}
perché non provi?
Tuttavia, nel caso in cui sia possibile provare subito, il seguente codice:
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();
fornisce questo output:
string 'pwnage' (length=6)
int 10
string 'hello' (length=5)
Quindi direi che sì, è valido :-)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow