Відповіді:
З документів :
Coalesce рівний або ?? = оператор - це оператор присвоєння. Якщо лівий параметр є нульовим, призначає лівому значення правого параметра. Якщо значення не є нульовим, нічого не робиться.
Приклад:
// 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';
Тому в основному це лише скорочення, щоб призначити значення, якщо воно не було призначене раніше.
У PHP 7 це спочатку було випущено, що дозволило розробнику спростити перевірку isset () у поєднанні з потрійним оператором. Наприклад, перед PHP 7 у нас може бути такий код:
$data['username'] = (isset($data['username']) ? $data['username'] : 'guest');
Коли було випущено PHP 7 , ми отримали можливість записувати це як:
$data['username'] = $data['username'] ?? 'guest';
Однак, коли PHP 7.4 виходить, це можна спростити ще далі:
$data['username'] ??= 'guest';
Один випадок, коли це не працює, якщо ви хочете призначити значення іншій змінній, тому ви не зможете використовувати цю нову опцію. Таким чином, хоча це вітається, може бути кілька обмежених випадків використання.
Оператор призначення нульового згортання - це стислий спосіб присвоєння результату оператора зведення нуля.
Приклад із офіційних приміток випуску :
$array['key'] ??= computeDefault();
// is roughly equivalent to
if (!isset($array['key'])) {
$array['key'] = computeDefault();
}
The folloving lines...