call_user_func系だと参照返しが出来ないので、やむなくeval()に。
参照を返す関数をcall_user_func経由で呼ぶと、
E_NOTICE: Only variable references should be returned by reference
が発生してしまう。ので、eval()を使って
eval("\$ret =& 実行時に決まる、参照を返す関数orメソッド(引数);");
みたいにしないと駄目でした・・・。
きっかけは、YakiBikiにKinoWikiのWikiParser部分を移植していて、半年ほど前(笑)にとりあえずPHP4に機械的に変換した時は、「?なんでeval()なんだろう・・・call_user_func_array()でよかね?」とcall_user_func_array()にしていたのですが、最近になってようやくWikiParserの実装に着手しだして、ちまちまやり始めたら嵌ったという次第。結局eval()に巻き戻し。