当函数包含引用的参数时,以下函数会生成错误,例如:
function test(&$arg, &$arg2)
{
// some code
}
现在我不能使用call_user_func_array
上述功能,它会产生错误。
如何解决这个问题呢?
我确实需要使用call_user_func_array
.
还假设我事先不知道它们是按引用传递还是按值传递。
谢谢
当函数包含引用的参数时,以下函数会生成错误,例如:
function test(&$arg, &$arg2)
{
// some code
}
现在我不能使用call_user_func_array
上述功能,它会产生错误。
如何解决这个问题呢?
我确实需要使用call_user_func_array
.
还假设我事先不知道它们是按引用传递还是按值传递。
谢谢
将参数存储在数组中时,请确保存储对这些参数的引用,它应该可以正常工作。
IE:
call_user_func_array("test", array(¶m1, ¶m2));
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);
}
实际的 hack 被评论包围。