Pergunta

Isso é legal?

<?php

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

?>

onde MENU_DEFAULT_VALUE e ODP_DEFAULT_VALUE são constantes definidas anteriormente no arquivo.

Foi útil?

Solução

Sim, isso é legal.

A partir o manual :

O valor padrão deve ser uma constante expressão, não (por exemplo) um , Um membro da classe variável ou uma função chamada.

Constantes se encaixam bill perfeitamente.

Outras dicas

Em um contexto OOP, você também pode usar uma constante membro da classe como um valor argumento método padrão.

class MyClass
{
    const A = 1;

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

Por que você não tenta?

Ainda assim, apenas no caso você pode testar agora, o seguinte 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();

dá essa saída:

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

Então, eu diria que, sim, é válido: -)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top