PHP:call_user_func_array:通过基准问题
下面的功能产生错误时函数包含引用的论据,例如通过:PHP:call_user_func_array:通过基准问题
function test(&$arg, &$arg2)
{
// some code
}
现在我不能为上述功能使用call_user_func_array
,它会产生一个错误。
如何解决这个问题?我需要使用call_user_func_array
。
也假设我不知道他们是通过引用传递还是通过值传递。
感谢
一个伟大的解决办法被张贴在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);
}
实际的黑客被评论所包围。
谢谢你,救了我的命!这绝对是正确的答案 – Mangiucugna 2013-11-23 15:29:35
切斯,谢谢! – maryisdead 2015-07-22 16:32:40
说得太快......虽然这消除了错误,但它不会让我操作可调用内部的引用变量。 – maryisdead 2015-07-22 16:52:53
如果您不接受当前的答案,这将是值得的,因为它完全是错误的(更不用说通过滥用改变问题语义的对象完全错误的建议):http://codepad.viper-7 .com/j3GOps – ircmaxell 2011-12-01 17:22:30