最近 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); }