Sol işlenen ise sol işlenen için değerlendirir truthy , aksi takdirde sağ işlenen.
Sahte kodda,
foo = bar ?: baz;
kabaca
foo = bar ? bar : baz;
veya
if (bar) {
foo = bar;
} else {
foo = baz;
}
fark bar
sadece bir kez değerlendirilecek.
Bunu, foo
yayınladığınız kod örneğinde gösterildiği gibi bir "kendi kendine kontrol" yapmak için de kullanabilirsiniz :
foo = foo ?: bar;
Bu atayacaktır bar
için foo
eğer foo
aksi takdirde terk edecek, null veya Falsey olduğu foo
değişmeden.
Bazı örnekler:
<?php
var_dump(5 ?: 0); // 5
var_dump(false ?: 0); // 0
var_dump(null ?: 'foo'); // 'foo'
var_dump(true ?: 123); // true
var_dump('rock' ?: 'roll'); // 'rock'
?>
Bu arada, Elvis operatörü olarak adlandırılıyor .
null
ya da herhangi bir değeri olduğunu varsaymaz . Just sayin '