冗長だ

PHP

$c = (new A())->getB()[0] || 0;

とか書けたら楽なのに(getB()は配列を返すメソッドとする)。
上記は下記と同じ意味になる。

$a = new A();
$b = $a->getB();
$c = array_key_exists(0, $b) && $b[0] ? $b[0] : 0;

つまり、

  • オブジェクト作って、メソッドの返値が欲しいだけの時に、何でわざわざ変数作らないとダメなんだ?
  • メソッドの返値が配列の時、何でそのまま添字アクセス出来なくて、またまた変数作らないといけないんだ?
  • あと、出来ればtrue/falseじゃなく結果確定時点の式の値を返してくれる論理演算子があったら楽。


ということなんですが。配列じゃなくてArrayObject使ってれば

$c = $a->getB()->offsetExists(0) ? $a->getB()->offsetGet(0) : 0;

とは書けるけど、長過ぎる。


PHP止めてRubyとか使え、ということか。