Operadores de Comparação Avançados no PHP
Ester artigo apresentará os operadores do PHP e como se comportam, incluindo os ? :, ?:, ??, ??=, <=> e ?->
Os operadores condicionais no PHP, como o ternário, Elvis, null coalesce e spaceship, são ferramentas poderosas que permitem escrever código de forma mais concisa e legível. Eles ajudam a evitar estruturas complexas como if-else, tornando o código mais enxuto e direto. Além disso, esses operadores são ideais para atribuições rápidas, validação de valores padrão e comparações eficientes, contribuindo para a manutenção e clareza do código.
Ternary Operator
$estaChovendo = true;
echo ($estaChovendo === true)
? 'Está Chovendo'
: 'Não Está Chovendo';
# Está Chovendo
O Ternary Operator (operador ternário) é extremamente versátil. Ele permite avaliar uma condição e retornar valores diferentes dependendo do resultado da comparação. Apesar de sua flexibilidade, em alguns casos há alternativas mais concisas. Disponível desde o php 4.0.
A lógica é a seguinte: (condicao) ? valor_se_true : valor_se_false
Dica: Os parênteses em torno da condição são opcionais, mas podem ajudar na legibilidade do código.
Elvis Operator / Short Ternary Operator
$clima = 'Está Chovendo';
echo $dia['clima'] ?: $clima ?: 'Não Sabemos o Clima';
# Está Chovendo
O Elvis Operator ou Short Ternary Operator é uma versão simplificada do operador ternário. Ele avalia se o valor da esquerda é "truthy" (verdadeiro) e o retorna. Caso contrário, retorna o valor da direita. É útil para verificar valores e definir padrões com menos código. Disponível desde o php 5.3.
Dica: Esse operador resultará em erro se a variavel ou chave for indefinida, se houver essa possibilodidade, o operador Null Coalesce é uma melhor escolha.
Null Coalesce Operator
$clima = [];
echo $clima['descricao'] ?? 'Não há descrição de clima';
# Não há descrição de clima
O Null Coalesce Operator (operador de coalescência nula) verifica se um valor existe e não é nulo. Caso contrário, retorna um valor padrão. É útil para acessar valores em arrays ou objetos sem causar erros ao acessar índices ou propriedades inexistentes. Disponível desde o php 7.0.
Este operador é seguro para chaves não definidas, sendo ideal para verificar valores em arrays sem se preocupar.
Null Coalesce Assignment Operator
$clima = [];
$clima['descricao'] ??= 'O clima está ameno';
echo $clima['descricao'];
# O clima está ameno
O Null Coalesce Assignment Operator combina a funcionalidade de coalescência nula com uma atribuição. Se a chave ou variável não existir ou for nula, ela será inicializada com o valor fornecido. Disponível desde o php 7.4.
Nota: Este operador é ideal para atribuições padrão, economizando linhas de código.
Spaceship Operator
$valor1 = 'chuva';
$valor2 = 'sol';
echo $valor1 <=> $valor2;
# -1
O Spaceship Operator (<=>) realiza uma comparação tripla e é muito útil para ordenar arrays ou realizar comparações complexas de forma compacta, em funções de callback. Disponível desde o php 7.0.
-
Retorna -1 se o valor da esquerda for menor que o da direita.
-
Retorna 0 se os valores forem iguais.
-
Retorna 1 se o valor da esquerda for maior que o da direita.
Nullsafe Operator
$cidade = null;
echo $cidade?->clima?->temperatura;
# null
O Nullsafe Operator (?->) permite acessar propriedades ou métodos de um objeto de forma segura, sem gerar erros caso o objeto seja null. Em vez de verificar manualmente se a variável é nula antes de acessar suas propriedades ou métodos, você pode usar o ?-> para retornar null automaticamente se o objeto for nulo, evitando exceções. Disponível desde o php 8.0.
Nota: Embora não seja um operador de comparação, o ?-> é útil para simplificar o código ao acessar propriedades e métodos de objetos, evitando verificações explícitas de nulidade, como if ($objeto !== null).
Conclusão
Esses operadores fornecem formas concisas e poderosas de escrever código, reduzindo a necessidade de if e outras estruturas condicionais. Escolher o operador correto depende do contexto, mas entender suas diferenças é essencial para usá-los de forma eficaz.