下面的功能產生錯誤時函數包含引用的論據,例如通過:PHP:call_user_func_array:通過基準問題
function test(&$arg, &$arg2)
{
// some code
}
現在我不能爲上述功能使用call_user_func_array
,它會產生一個錯誤。
如何解決這個問題?我需要使用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