call_user_func_array のバグと回避策
call_user_func_arrayの話ですが、
参照渡しのある関数を呼び出すと、うまく値が変わってくれないというバグがあったりします。
[php] <?php function aaa(& $str) { $str = 'hello'; }
$tmp = array('abc'); call_user_func_array('aaa',$tmp);
echo $tmp[0]; // 'abc' と表示される;
[/php]
ただ、こうするとちゃんと動作するようです。
[php]
<?php
function aaa(& $str) { $str = 'hello'; }
$tmp = array('abc'); $wk = array(); for ($i=0;$i<sizeof($tmp);$i++) { $wk[] = & $tmp[$i]; } call_user_func_array('aaa',$tmp);
echo $tmp[0]; // 'hello' と表示される;[/php]
バッドノウハウくさいんですがね。
バージョン依存とかはないのかしら。