Risposte:
Dai documenti :
Coalesce uguale o ?? = operatore è un operatore di assegnazione. Se il parametro left è null, assegna il valore del parametro destro a quello sinistro. Se il valore non è nullo, non viene fatto nulla.
Esempio:
// 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';
Quindi in pratica è solo una scorciatoia per assegnare un valore se non è stato assegnato prima.
In PHP 7 questo è stato originariamente rilasciato, consentendo a uno sviluppatore di semplificare un controllo isset () combinato con un operatore ternario. Ad esempio, prima di PHP 7, potremmo avere questo codice:
$data['username'] = (isset($data['username']) ? $data['username'] : 'guest');
Quando è stato rilasciato PHP 7 , abbiamo avuto la possibilità di scrivere questo come:
$data['username'] = $data['username'] ?? 'guest';
Ora, tuttavia, quando PHP 7.4 viene rilasciato, questo può essere ulteriormente semplificato in:
$data['username'] ??= 'guest';
Un caso in cui ciò non funziona è se stai cercando di assegnare un valore a una variabile diversa, quindi non potresti utilizzare questa nuova opzione. Pertanto, benché ciò sia positivo, potrebbero esserci alcuni casi d'uso limitati.
L'operatore di assegnazione di coalescenza null è un modo abbreviato di assegnare il risultato dell'operatore di coalescenza null.
Un esempio dalle note di rilascio ufficiali :
$array['key'] ??= computeDefault();
// is roughly equivalent to
if (!isset($array['key'])) {
$array['key'] = computeDefault();
}
Documenti di esempio :
$array['key'] ??= computeDefault();
// is roughly equivalent to
if (!isset($array['key'])) {
$array['key'] = computeDefault();
}
The folloving lines...