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 $_GET
ou $_POST
usando 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']
à $name
variável se $_POST['name']
existir e não for nulo. Caso contrário, ele atribui ''
à $name
variá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 name
não existir no $_POST
array ou for nula, o ??
operador atribuirá a string 'John'
à $name
variá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'); // default
Linguagem 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 $last
não existe, the $name
assumirá 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 0
se $counter
ele existe null
ou não:
$counter = $counter ?? 0;
Linguagem de código: PHP ( php )
A instrução acima repete a variável $counter
duas 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 eisset()
. - O operador de atribuição de coalescência nula atribui o operando direito ao esquerdo se o operando esquerdo for nulo.