IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

PHP で引数をそのまま返す関数を作っておくと便利

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];