関数を起動する方法
karintoの関数起動でいろいろやったけど、どうもReflectionFunction::invokeの引数にオブジェクトを渡しても参照渡しにならないみたい。参照渡しにしたい場合は明示的に&を引数の先頭に付けないとダメなようだ。この辺の使い勝手はcall_user_func_array関数と変わらんな…。
我ながらどうかと思うコードを書いてみた。
<?php $reflection = new ReflectionFunction($function); switch ($reflection->getNumberOfParameters()) { case 2: $function($req, $res); break; case 3: $session = new karinto_session($res); $function($req, $res, $session); break; default: $res->status(404); break; }
http://code.google.com/p/karinto/source/browse/trunk/karinto.php?r=51