Hatena::ブログ(Diary)

bobchinの日記 このページをアンテナに追加 RSSフィード

2010年09月05日(日)

[]最近 PHP 触ってないけど 20:57 最近 PHP 触ってないけどを含むブックマーク

http://d.hatena.ne.jp/naoya/20100905/1283662354

push () で func_get_args() 使っているので、コンストラクタでも使うと

arrayを使わなくても済む気がします。

    function List_RubyLike ($array) {
        if (!is_array($array)) {
            $array = func_get_args();
        }
        $this->list =& $array;
    }

関数もいいけどどうせならstaticで

    static function factory($array)
    {
        if (!is_array($array)) {
            $array = func_get_args();
        }
        return new self( $array );
    }

http://jp.php.net/manual/ja/function.array-push.php

読むと

注意: もし配列ひとつの要素を加えるために array_push() を使用するなら、 関数を呼ぶオーバーヘッドがないので、$array[] = を使用するほうがいいです。

なので、

    function push () {
        foreach (func_get_args() as $v) {
            $this->list[] = $v;
        }
        return $this;
    }

ま、ハッシュ配列使わないなら、

    function push () {
        $this->list = array_merge($this->list, func_get_args());
        return $this;
    }

array_sum()なんてのもあるみたいだし、

    function sum () {
        $result = array_sum($this->list);
        $this->list = array();
        return $result;
    }

dumpは無条件に出力してしまうのでこんな感じはどう?

return 抜けていた。

    function dump($out = false) {
        return var_export($this, $out);
    }

[]無名関数 14:01 無名関数を含むブックマーク

全く触ってなかったんだけど、5.3から無名関数が使えるようになったのね。

昔は create_function 使うしかなかった気もしたけど。。。

naoyanaoya 2010/09/06 06:29 ありがとうございます!

いくつか取り込んでみました!

トラックバック - http://d.hatena.ne.jp/bobchin/20100905