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.

¿Fue útil?

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
scroll top