Operador de coalescência nulo PHP

Resumo : neste tutorial, você aprenderá sobre o operador de coalescência nulo do PHP para atribuir um valor a uma variável se a variável não existir ou for nula.

Introdução ao operador de coalescência nula do PHP

Ao trabalhar com formulários , muitas vezes você precisa verificar se existe uma variável no $_GETou $_POSTusando o operador ternário em conjunto com a isset()construção. Por exemplo:

<?php

$name = isset($_POST['name']) ? $_POST['name]: '';Linguagem de código:  PHP  ( php )

Este exemplo atribui o $_POST['name']à $namevariável se $_POST['name']existir e não for nulo. Caso contrário, ele atribui ''à $namevariável.

Para torná-lo mais conveniente, o PHP 7.0 adicionou suporte para um operador coalescente nulo que é o açúcar sintático de um operador ternário e isset():

<?php

$name = $_POST['name'] ?? 'John';Linguagem de código:  PHP  ( php )

Neste exemplo, the ??é o operador de coalescência nulo. Aceita dois operandos. Se o primeiro operando for nulo ou não existir, o operador de coalescência nulo retornará o segundo operando. Caso contrário, ele retorna o primeiro.

No exemplo acima, se a variável namenão existir no $_POSTarray ou for nula, o ??operador atribuirá a string 'John'à $namevariável. Veja o exemplo a seguir:

<?php

var_dump(false ?? 'default');   // false
var_dump(true ?? 'default');   // true
var_dump('' ?? 'default');   // ""
var_dump(0 ?? 'default');   // 0
var_dump([] ?? 'default');   // array()
var_dump(null ?? 'default');   // defaultLinguagem de código:  PHP  ( php )

Como você pode ver claramente na saída, o ??operador é como uma porta que não permite a passagem de nulo.

Empilhando os operadores de coalescência PHP Null

PHP permite empilhar os operadores de coalescência nulos. Por exemplo:

<?php

$name = $fullname ?? $first ?? $last ?? 'John';
echo $name; // 'John';Linguagem de código:  PHP  ( php )

Neste exemplo, como $fullname, $first, e $lastnão existe, the $nameassumirá o 'John'valor.

Operador de atribuição de coalescência nula PHP

O exemplo a seguir usa o operador de coalesing nulo para atribuir a 0se $counterele existe nullou não:

$counter = $counter ?? 0;Linguagem de código:  PHP  ( php )

A instrução acima repete a variável $counterduas vezes. Para torná-lo mais conciso, o PHP 7.4 introduziu o operador de atribuição de coalescência nula ( ??=):

$counter ??= 0;Linguagem de código:  PHP  ( php )

Neste exemplo, the ??=é o operador de atribuição de coalescência nula. Ele atribui o operando direito à esquerda se o operando esquerdo for nulo. Caso contrário, o operador de atribuição coalescente não fará nada.

É equivalente ao seguinte:

if(!isset($counter)) {
    $counter = 0;
}Linguagem de código:  PHP  ( php )

Na prática, você usará o operador de atribuição de coalescência nula para atribuir um valor padrão a uma variável se ela for nula.

Resumo

  • O operador coalescente nulo ( ??) é um açúcar sintático do operador ternário e isset().
  • O operador de atribuição de coalescência nula atribui o operando direito ao esquerdo se o operando esquerdo for nulo.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *