当函数包含引用的参数时,下面的函数会生成错误,例如:
function test(&$arg, &$arg2)
{
// some code
}
现在我不能将call_user_func_array
用于上述功能,它会产生错误。
如何解决这个问题?
我确实需要使用call_user_func_array
。
还假设我事先不知道它们是通过引用传递还是通过值传递。
由于
答案 0 :(得分:21)
在数组中存储参数时,请确保存储对这些参数的引用,它应该可以正常工作。
即:
call_user_func_array("test", array(¶m1, ¶m2));
答案 1 :(得分:7)
在http://www.php.net/manual/de/function.call-user-func-array.php#91503
上发布了一个很好的解决方法function executeHook($name, $type='hooks'){
$args = func_get_args();
array_shift($args);
array_shift($args);
//Rather stupid Hack for the call_user_func_array();
$Args = array();
foreach($args as $k => &$arg){
$Args[$k] = &$arg;
}
//End Hack
$hooks = &$this->$type;
if(!isset($hooks[$name])) return false;
$hook = $hooks[$name];
call_user_func_array($hook, $Args);
}
实际的黑客被评论所包围。