Réponses:
De la documentation :
Coalesce égal ou ?? = opérateur est un opérateur d'affectation. Si le paramètre gauche est nul, affecte la valeur du paramètre droit à celui de gauche. Si la valeur n'est pas nulle, rien n'est fait.
Exemple:
// 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';
Il s'agit donc simplement d'un raccourci pour attribuer une valeur si elle n'a pas été affectée auparavant.
En PHP 7, cela a été initialement publié, permettant à un développeur de simplifier une vérification isset () combinée à un opérateur ternaire. Par exemple, avant PHP 7, nous pourrions avoir ce code:
$data['username'] = (isset($data['username']) ? $data['username'] : 'guest');
Lorsque PHP 7 a été publié, nous avons pu écrire ceci à la place:
$data['username'] = $data['username'] ?? 'guest';
Maintenant, cependant, lorsque PHP 7.4 est sorti, cela peut être encore simplifié:
$data['username'] ??= 'guest';
Un cas où cela ne fonctionne pas est si vous cherchez à affecter une valeur à une variable différente, vous ne pourrez donc pas utiliser cette nouvelle option. En tant que tel, bien que cela soit bienvenu, il pourrait y avoir quelques cas d'utilisation limitée.
L'opérateur d'affectation coalescent nul est un moyen raccourci d'assigner le résultat de l'opérateur coalescent nul.
Un exemple des notes de version officielles :
$array['key'] ??= computeDefault();
// is roughly equivalent to
if (!isset($array['key'])) {
$array['key'] = computeDefault();
}
The folloving lines...