逆引き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でメソッドを追加するのも簡単にできます。