逆引きrhaco(?)6: 無名関数(もどき)を作る

PHPでは無名関数をつくれないのですが、それっぽいものをrhacoではつくることが出来ます。(rhaco 1.3.1以降)。

(追記)実際は無名関数ではなく、無名っぽくするために、ランダムにクラス名を決める、ランダム名クラスになります。

例えばJavascript

ret = function(x){return x++;}
alert(ret(3));// = 3

というのを

Rhaco::import('lang.Variable');
$return = Variable::anonym(array("alert","x","return x++;"));
echo $return->alert(3);// = 3

と書けます。引数が複数欲しい場合は

$return = Variable::anonym(array("alert","x,y","return x+y;"));
echo $return->alert(3,1);// = 4

プロパティを指定したい場合は

$return = Variable::anonym("hoge","fuga",array("alert","x","$this->hoge=x;$this->fuga=x-1;"));
$return->alert(3);
echo $return->hoge;// = 3
echo $return->fuga;// = 2

プロパティは2つを例としましたが、何個でも指定可能です。
Javascriptより直感的ではないですが、これを使うことで、手軽に関数を書くことが出来ます。後日書く予定のmixinでメソッドを追加するのも簡単にできます。