PHP では以下のように new してすぐメソッドを呼べない
<?php new DateTime()->getOffset();
なので、引数をそのまま返す関数を作ってやると
<?php function expr($a) { return $a; } expr(new DateTime())->getOffset(); // OK!
便利だなー
おまけ
配列アクセス用のも作っておくと便利
<?php function expr($a) { return $a; } function idx($array, $i) { return $array[$i]; } echo idx(idx(expr(new DateTimeZone('Asia/Tokyo'))->getTransitions(), 0), 'abbr') . "\n";
おまけ2
無名関数をそのまま呼ぶときにも使える。
<?php function expr($a) { return $a; } expr(function() { echo "hello\n"; })->__invoke();
おまけ3
配列は、以下のようにして繋ぐことも
<?php class Ref { var $val; function __construct($a) { $this->val = $a; } } function ref($a) { return new Ref($a); } ref(array(1, 2, 3))->val[0];