Usar constantes como valores de función predeterminados en PHP
Pregunta
¿Es esto legal?
<?php
function ftw($foo = 'pwnage', $nub = MENU_DEFAULT_VALUE, $odp = ODP_DEFAULT_VALUE) {
//lots_of_awesome_code
}
?>
donde MENU_DEFAULT_VALUE
y ODP_DEFAULT_VALUE
son constantes definidas previamente en el archivo.
Solución
Sí, eso es legal.
De el manual :
El valor predeterminado debe ser una constante expresión, no (por ejemplo) una variable, un miembro de la clase o una función llamada.
Las constantes se ajustan perfectamente a esa factura.
Otros consejos
En un contexto OOP, también puede usar una constante de miembro de clase como valor de argumento de método predeterminado.
class MyClass
{
const A = 1;
public function __construct($arg = self::A)
{
echo $arg;
}
}
¿por qué no lo intentas?
Aún así, en caso de que pueda probar en este momento, el siguiente código:
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();
da este resultado:
string 'pwnage' (length=6)
int 10
string 'hello' (length=5)
Entonces diría que sí, es válido :-)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow