Operador ?? no PHP: Como funciona o Null Coalescing Operator e quando usar



Objetivo

Apresentar, de forma detalhada e prática, o funcionamento do operador de coalescência nula (??) no PHP, destacando sua sintaxe, comportamento interno e principais casos de uso no desenvolvimento moderno. O artigo tem como propósito demonstrar como esse operador simplifica verificações de null, reduz código redundante e melhora a legibilidade das aplicações, por meio de exemplos reais, comparações com abordagens tradicionais e boas práticas recomendadas para sistemas em produção.

Operador de Coalescência Nula ??

O PHP sempre ofereceu diversas maneiras de lidar com valores nulos, variáveis indefinidas e verificação condicional. No entanto, a partir do PHP 7, a linguagem ganhou um recurso poderoso e extremamente útil: o operador ??, conhecido como Null Coalescing Operator (Operador de Coalescência Nula).

Esse operador simplifica verificações comuns no código, reduz repetições e melhora a legibilidade — sendo especialmente eficiente no tratamento de dados vindos de formulários, arrays, superglobais, objetos e APIs.

Neste artigo, você verá em detalhes o que é o operador ??, como funciona, diferenças em relação a outras abordagens e diversos exemplos práticos de uso.

Referências

O que é operador ?? no PHP

O operador ?? retorna o primeiro valor que existir e não seja nulo. Ele evita erros ao acessar índices ou propriedades inexistentes, substituindo verificações comuns com isset() ou comparações manuais.

Sua sintaxe básica é:

$variavel = $valor1 ?? $valor2;

O comportamento é:

  • Se $valor1 existe e não é null, $variavel recebe $valor1.

  • Caso contrário, receberá $valor2.

Portanto, o operador ?? funciona como uma forma simplificada de:

$variavel = isset($valor1) ? $valor1 : $valor2;

Por que esse operador existe?

Antes do PHP 7, programadores faziam verificações assim (perador ternário):

$nome = isset($_GET['nome']) ? $_GET['nome'] : 'Visitante';

Ou ainda algo mais prolixo:

if (isset($_GET['nome'])) {
    $nome = $_GET['nome'];
} else {
    $nome = "Visitante";
}

Com o operador ??, escrevemos:

$nome = $_GET['nome'] ?? 'Visitante';

Muito mais limpo, direto e seguro.

Quando usar o operador ??

O ?? é ideal quando:

  • É necessário tratar valores opcionais.

  • Ao lidar com arrays superglobais ($_GET, $_POST, $_SESSION).

  • Quando o valor pode ser nulo.

  • Ao acessar objetos ou arrays com campos incertos.

  • Ao definir valores padrão.

  • Ao manipular dados vindos de APIs externas.

Quando NÃO usar o operador ??

Não use ?? para avaliar se uma variável está:

  • vazia ("")

  • zero (0)

  • false (false)

  • array vazio ([])

Use ?? somente para:

  • variável não definida

  • variável com valor null

Para avaliar “está vazio?”, prefira empty() ou validações específicas.

Exemplos do uso do operador ??

Exemplo 1 – Usando ?? com variáveis indefinidas

$usuario = $nome ?? "Anônimo";
echo $usuario;

Se $nome não estiver definida (não existir ou for nulo), $usuario receberá "Anônimo".

Exemplo 2 – Usando ?? com $_POST e $_GET

$email = $_POST['email'] ?? "email@desconhecido.com";
echo $email;

Exemplo 3 – Encadeamento com ?? (multi fallback)

O operador também pode ser encadeado para múltiplas alternativas:

$valor = $_POST['campo'] 
      ?? $_GET['campo'] 
      ?? 'Não informado';

echo $valor;

Explicação:

  • Tenta primeiro o valor enviado via POST.

  • Se não existir ou for null, tenta via GET.

  • Se não existir ou for null, usa o padrão "Não informado".

Exemplo 4 – Usando ?? com objetos

class Usuario {
    public ?string $telefone = null;
}

$u = new Usuario();
echo $u->telefone ?? "Telefone não informado";

Explicação:

Neste exemplo, a classe Usuario possui a propriedade $telefone tipada como ?string, o que significa que ela pode receber uma string ou null (PHP versão 8.4). Por padrão, essa propriedade é inicializada com null.

Ao criar a instância:

$u = new Usuario();

a propriedade $telefone permanece null.

Na linha:

echo $u->telefone ?? "Telefone não informado";

O operador de coalescência nula (??) verifica se $u->telefone existe e não é null. Como o valor é null, o PHP retorna o valor à direita do operador, exibindo: Telefone não informado

Exemplo 5 – Misturando ?? com leitura de JSON/API

$resposta = json_decode($api, true);

$status = $resposta['status'] ?? 'erro';
$mensagem = $resposta['mensagem'] ?? 'Sem detalhes';

echo "Status: $status - $mensagem";

Exemplo 6 – Substituindo valores nulos no banco de dados

$nome = $linha['nome'] ?? "Sem nome cadastrado";

Conclusão

O operador de coalescência nula ?? é uma das adições mais úteis ao PHP moderno. Ele torna o código mais limpo, reduz erros comuns com índices inexistentes e melhora a legibilidade — especialmente ao trabalhar com formulários, APIs, bancos de dados e objetos que podem conter valores nulos.

Com o uso adequado do operador ??, você escreve aplicações mais robustas, seguras e elegantes, seguindo as boas práticas do PHP atual.

O anúncio abaixo ajuda manter o Portal Visual Dicas

Comentários

×

Infomações do site / SEO