Respostas:
Dos documentos :
Coalesce igual ou ?? = operador é um operador de atribuição. Se o parâmetro esquerdo for nulo, atribua o valor do parâmetro direito à esquerda. Se o valor não for nulo, nada será feito.
Exemplo:
// The folloving lines are doing the same
$this->request->data['comments']['user_id'] = $this->request->data['comments']['user_id'] ?? 'value';
// Instead of repeating variables with long names, the equal coalesce operator is used
$this->request->data['comments']['user_id'] ??= 'value';
Portanto, é basicamente apenas uma abreviação para atribuir um valor se ele não tiver sido atribuído antes.
No PHP 7, isso foi lançado originalmente, permitindo que um desenvolvedor simplificasse uma verificação isset () combinada com um operador ternário. Por exemplo, antes do PHP 7, poderíamos ter este código:
$data['username'] = (isset($data['username']) ? $data['username'] : 'guest');
Quando o PHP 7 foi lançado, pudemos escrever isso como:
$data['username'] = $data['username'] ?? 'guest';
Agora, no entanto, quando o PHP 7.4 é lançado, isso pode ser simplificado ainda mais:
$data['username'] ??= 'guest';
Um caso em que isso não funciona é se você deseja atribuir um valor a uma variável diferente, portanto, não poderá usar esta nova opção. Como tal, embora isso seja bem-vindo, pode haver alguns casos de uso limitados.
O operador de atribuição de coalescência nula é uma maneira abreviada de atribuir o resultado do operador de coalescência nula.
Um exemplo das notas oficiais de lançamento :
$array['key'] ??= computeDefault();
// is roughly equivalent to
if (!isset($array['key'])) {
$array['key'] = computeDefault();
}
Documentos de exemplo :
$array['key'] ??= computeDefault();
// is roughly equivalent to
if (!isset($array['key'])) {
$array['key'] = computeDefault();
}
The folloving lines...