Uso do operador "??" no PHP [dica php]
Apartir do PHP 7.0 está disponível o operador ??
baptizado como Null Coalescing Operator, que pode ser traduzido como operador de coalescência nula.
É utilizado no PHP para retornar o primeiro operando que não seja nulo. Se o primeiro operando for nulo, ele retorna o segundo operando.
Exemplo:
$username = $_GET['user'] ?? 'defaultuser';
Neste exemplo, se $_GET['user']
não estiver definido ou for nulo, a variável $username receberá o valor 'defaultuser'
.
Este operador simplifica muito códigos que requerem o uso do opreador ternário (?:
), isset()
, if else
e até do legado @
;
Feito com suporte ao chat GPT-4o, tendo como front-end a extesão Sider do Chrome
Abraços...
Existe também uma variação do null coalesce operator que é o ??=
// Se A for nula, então recebe B - forma convencional
$a = $a ? $a : $b;
// forma simplificada
$a = $a ?? $b;
// Null coalesce diferentão
$a ??= $b;
> $a ??= $b;
Esse null coalescing, é muito interessante, ainda não sendo usado. Valeu pela dica `silvestrini`
Dessa forma eu nunca tinha visto, massa!
A primeira vez que o vi em atuação foi na atribuição de password da UserFactory do Laravel.
Conheci pelo JS, então quando soube que existia no PHP também já tinha essa bagagem.
voce pode usar como um if de uma linha exemplo:
`(condicao)??funcaoQueFazCoisa();
//early return
(validacao)?? return $respostaJson;`
ps: to no celular não consegui formatar como código
`$donoDoTwitter = 'Ellon Musk'`;
- Abaixo os códigos verificarão se a string `$donoDoTwitter` é mesmo o `'Ellon Musk'`:
- Verificação com `if`:
`if($donoDoTwitter == 'Ellon Musk'){
return true; // Verdade
} else
return false; // Mentira
}
// Retorno esperado: true;`
- Mesma verificação, mas com '`??`':
`$donoDoTwitter = ($donoDoTwitter == 'Ellon Musk') ? true : false;
// Retorno esperado: true;`
- Verificando se `$donoDoTwitter` NÃO é nulo:
`$donoDoTwitter ??= false;
// Retorno esperado: true;`