No manual do PHP, para mostrar a sintaxe das funções com parâmetros opcionais, eles usam colchetes em torno de cada conjunto de parâmetros opcionais dependentes. Por exemplo, para a date()
função, o manual lê:
string date ( string $format [, int $timestamp = time() ] )
Onde $timestamp
é um parâmetro opcional e, quando deixado em branco, o padrão time()
é o valor de retorno da função.
Como você cria parâmetros opcionais como este ao definir uma função personalizada no PHP?
function dosomething($var1, $var2, $optionalValue = null)
Encontrei essa melhor opção.Se você precisar dessa funcionalidade, no entanto:
Assumindo que
$bar
não se espera que seja um booleano, é claro.fonte
$bar === false
- esta é uma ação que deve ser executada quando o$bar
padrão é o padrãofalse
. Isso evitará a ação incorreta se0
for passada, assim funcionará - A menos que seja necessário um booleano. Como Kzqai disse, uma solução mais geral é usar$bar = null
, porque isso também pode ser usado quando os valores de $ bar são booleanos. O teste então se tornaif (is_null($bar))
ouif ($bar === null)
.Algumas notas que também achei úteis:
Mantenha seus valores padrão no lado direito.
O valor padrão do argumento deve ser uma expressão constante. Não pode ser uma variável ou uma chamada de função.
fonte
Atribua um valor padrão ao argumento opcional.
fonte
A função date seria definida assim:
Normalmente, você colocaria o valor padrão como este:
No entanto, apenas literais são argumentos padrão válidos, e é por isso que usei
null
como argumento padrão no primeiro exemplo, não$timestamp = time()
e combinei-o com uma verificação nula. Os literais incluem matrizes (array()
ou[]
), booleanos, números, seqüências de caracteres enull
.fonte
Se você não sabe quantos atributos precisam ser processados, pode usar o token da lista de argumentos variados (
...
) introduzido no PHP 5.6 ( veja a documentação completa aqui ).Sintaxe:
Por exemplo:
Como você pode ver, esse token basicamente transforma todos os parâmetros em uma matriz, que você pode processar da maneira que desejar.
fonte