初めて使った関数

Mapleを作り始めたときには「parse_ini_file」というものに衝撃を受けていたわけですが、今回のAOPではじめて使ったのが、「call_user_func_array」です。こいつのおかげでevalなしで切り抜けました。

マニュアルの「call_user_func」の説明には、「この関数のパラメータfunctionにarray($objectname, $methodname)を指定することにより、オブジェクトのメソッドも静的にコールすることができます。」とあるので、クラスメソッドしか呼べないのかとおもっていたら、以下のようにすることによりインスタンスメソッドも呼べます(って常識だったりしますかね・・・)。

// $methodArgsは引数に渡したい値の配列
call_user_func_array(array(&$instance, $methodName), $methodArgs);

これでインスタンスメソッドを参照渡ししたい引数もこみで呼び出せます。S2PHP5ではMethodInvocation#invokeの先(MethodUtilですね)でeval使ってるようなので、これ使ってeval使わないようにしてはどうでしょう?(evalエライ遅いらしいですよ。via guessworkのjunoさんのところ)

突然ですが、意外としらないかもしれない関数の使い方!
"/abcdefg/" というような文字があった場合、以下のようにすると両端の「/」がはずせます。

$str = trim("/abcedfg/", "/")

ちなみに私はMaple作るまでしりませんでした・・・この第2引数使い方によってはえらい強力なので是非つかってみてください(ってこれもみんなしってたりするのかな・・・)。