Yanıtlar:
Gönderen docs :
Eşitlik eşit veya ?? = operatörü bir atama operatörüdür. Left parametresi null ise, sağ parametrenin değerini sol parametreye atar. Değer null değilse, hiçbir şey yapılmaz.
Misal:
// 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';
Bu nedenle, daha önce atanmamışsa, bir değer atamak temel olarak basittir.
In PHP 7 bu aslında bir geliştirici bir üçlü operatörü ile kombine bir isset () çeki basitleştirmek için izin serbest bırakıldı. Örneğin, PHP 7'den önce şu kodu alabiliriz:
$data['username'] = (isset($data['username']) ? $data['username'] : 'guest');
Ne zaman PHP 7 serbest bırakıldı, bunun yerine bu yazma yeteneği var:
$data['username'] = $data['username'] ?? 'guest';
Ancak, PHP 7.4 yayınlandığında, bu daha da basitleştirilebilir:
$data['username'] ??= 'guest';
Bunun işe yaramadığı durumlardan biri, farklı bir değişkene değer atamak istiyorsanız, bu nedenle bu yeni seçeneği kullanamazsınız. Bu nedenle, bu memnuniyetle karşılanırken birkaç sınırlı kullanım durumu olabilir.
Boş birleştirme atama operatörü, boş birleştirme operatörünün sonucunu atamanın kısa bir yoludur.
Resmi sürüm notlarından bir örnek :
$array['key'] ??= computeDefault();
// is roughly equivalent to
if (!isset($array['key'])) {
$array['key'] = computeDefault();
}
Örnek Dokümanlar :
$array['key'] ??= computeDefault();
// is roughly equivalent to
if (!isset($array['key'])) {
$array['key'] = computeDefault();
}
Boş birleştirme atama operatörü zinciri:
$a = null;
$b = null;
$c = 'c';
$a ??= $b ??= $c;
print $b; // c
print $a; // c
The folloving lines...