Я только что посмотрел видео о новых возможностях PHP 7.4 и увидел этого ??=
нового оператора. Я уже знаю ??
оператора. Как это отличается?
10
Из документов :
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';
Таким образом, это просто сокращение для присвоения значения, если оно не было назначено ранее.
The folloving lines...
В PHP 7 это было первоначально выпущено, позволяя разработчику упростить проверку isset () в сочетании с троичным оператором. Например, до PHP 7 у нас мог бы быть этот код:
Когда был выпущен PHP 7 , мы получили возможность написать это так:
Однако теперь, когда выйдет PHP 7.4 , это можно упростить еще дальше:
Один из случаев, когда это не работает, если вы хотите присвоить значение другой переменной, поэтому вы не сможете использовать эту новую опцию. Таким образом, хотя это приветствуется, может быть несколько случаев ограниченного использования.
источник
Оператор присваивания нулевого объединения - это краткий способ присвоения результата оператору объединения нулей.
Пример из официальных заметок о выпуске :
источник
Примеры документов :
источник