Sar*_*raz 6 php function-calls
当函数包含引用的参数时,以下函数会生成错误,例如:
function test(&$arg, &$arg2)
{
// some code
}
Run Code Online (Sandbox Code Playgroud)
现在我不能call_user_func_array用于上面的功能,它会产生错误.
如何解决这个问题呢?
我确实需要使用call_user_func_array.
还假设我事先不知道它们是通过引用传递还是通过值传递.
谢谢
Myl*_*les 21
将参数存储在数组中时,请确保存储对这些参数的引用,它应该可以正常工作.
即:
call_user_func_array("test", array(¶m1, ¶m2));
Run Code Online (Sandbox Code Playgroud)
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);
}
Run Code Online (Sandbox Code Playgroud)
实际的黑客被评论所包围.