6

当函数包含引用的参数时,以下函数会生成错误,例如:

function test(&$arg, &$arg2)
{
  // some code
}

现在我不能使用call_user_func_array上述功能,它会产生错误。

如何解决这个问题呢?

我确实需要使用call_user_func_array.

还假设我事先不知道它们是按引用传递还是按值传递。

谢谢

4

2 回答 2

21

将参数存储在数组中时,请确保存储对这些参数的引用,它应该可以正常工作。

IE:

call_user_func_array("test", array(&param1, &param2));
于 2009-12-15T07:47:00.750 回答
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); 
} 

实际的 hack 被评论包围。

于 2013-08-19T09:15:12.110 回答