PHP:call_user_func_array:通过引用问题传递

时间:2009-12-15 07:44:37

标签: php function-calls

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

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

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

如何解决这个问题?

我确实需要使用call_user_func_array

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

由于

2 个答案:

答案 0 :(得分:21)

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

即:

call_user_func_array("test", array(&param1, &param2));

答案 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); 
} 

实际的黑客被评论所包围。