Şartlı PHP değerler atama

0 Cevap php

Ben üçlü operatörler hayranıyım bir ifadenin sonucuna dayalı bir değişkene bir değer atama çok yaygın durumda:

$foo = $bar ? $a : b;

$ Bar nispeten pahalı bir işlemdir ve ben sonuç truthy ise $ foo için $ bar sonucunu atamak istiyorsanız Ancak, bu verimsiz:

$foo = SomeClass::bigQuery() ? SomeClass::bigQuery() : new EmptySet();

Bir seçenek:

$foo = ($result = SomeClass::bigQuery()) ? $result : new EmptySet();

Ama doğrusu fazladan $result bellekte oturan olurdu değil.

Elimdeki en iyi seçenek:

$foo = ($foo = SomeClass::bigQuery()) ? $foo : new EmptySet();

Ya da, üçlü operatörler olmadan:

if(!$foo = SomeClass::bigQuery()) $foo = new EmptySet();

Ya da, eğer program akış operatörleri tarzı değildir:

($foo = SomeClass::bigQuery()) || ($foo = new EmptySet());

O kadar çok seçenek, onları sigara gerçekten tatmin edici. Hangi kullanmak istiyorsunuz, ve ben burada gerçekten belirgin bir şey eksik?

0 Cevap