式の結果に基づいて変数に値を代入する非常に一般的なケースでは、私は三項演算子のファンです。
$foo = $bar ? $a : b;
ただし、$bar が比較的高価な操作であり、結果が真である場合に $bar の結果を $foo に割り当てたい場合、これは非効率的です。
$foo = SomeClass::bigQuery() ? SomeClass::bigQuery() : new EmptySet();
1 つのオプションは次のとおりです。
$foo = ($result = SomeClass::bigQuery()) ? $result : new EmptySet();
$result
しかし、余分なものを記憶に残したくありません。
私が持っている最良のオプションは次のとおりです。
$foo = ($foo = SomeClass::bigQuery()) ? $foo : new EmptySet();
または、三項演算子なし:
if(!$foo = SomeClass::bigQuery()) $foo = new EmptySet();
または、プログラム フロー演算子が好みでない場合は、次のようにします。
($foo = SomeClass::bigQuery()) || ($foo = new EmptySet());
非常に多くのオプションがありますが、どれも満足のいくものではありません。どちらを使用しますか?ここで本当に明白な何かが欠けていますか?