Antworten:
Aus den Dokumenten :
Coalesce gleich oder ?? = Operator ist ein Zuweisungsoperator. Wenn der linke Parameter null ist, weist er dem linken den Wert des rechten Parameters zu. Wenn der Wert nicht null ist, wird nichts unternommen.
Beispiel:
// 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';
Es ist also im Grunde nur eine Abkürzung, einen Wert zuzuweisen, wenn er zuvor noch nicht zugewiesen wurde.
In PHP 7 wurde dies ursprünglich veröffentlicht, sodass ein Entwickler eine isset () - Prüfung in Kombination mit einem ternären Operator vereinfachen kann. Zum Beispiel könnten wir vor PHP 7 diesen Code haben:
$data['username'] = (isset($data['username']) ? $data['username'] : 'guest');
Als PHP 7 veröffentlicht wurde, konnten wir dies stattdessen wie folgt schreiben:
$data['username'] = $data['username'] ?? 'guest';
Wenn jedoch PHP 7.4 veröffentlicht wird, kann dies noch weiter vereinfacht werden in:
$data['username'] ??= 'guest';
Ein Fall, in dem dies nicht funktioniert, ist, wenn Sie einer anderen Variablen einen Wert zuweisen möchten, sodass Sie diese neue Option nicht verwenden können. Obwohl dies begrüßt wird, kann es einige begrenzte Anwendungsfälle geben.
Der Null-Koaleszenz-Zuweisungsoperator ist eine Kurzform zum Zuweisen des Ergebnisses des Null-Koaleszenz-Operators.
Ein Beispiel aus den offiziellen Versionshinweisen :
$array['key'] ??= computeDefault();
// is roughly equivalent to
if (!isset($array['key'])) {
$array['key'] = computeDefault();
}
Beispiel Text & Tabellen :
$array['key'] ??= computeDefault();
// is roughly equivalent to
if (!isset($array['key'])) {
$array['key'] = computeDefault();
}
The folloving lines...