php手册 中关于
请注意,传入call_user_func()的参数不能为引用传递。
关于这个情况的解释,可自己搜索。我们可以自己定义一个函数解决这样的问题,实例如下:
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
function call_user_func_super($h,&$c)
{
if(is_callable($h))
{
return (is_array($h))?$h[0]->$h[1]($c):$h($c);
}
else
{
return false;
}
}
$c = 1;
$h = function(&$c){
echo ++$c;
};
call_user_func_super($h,$c);
echo $c.'<br/>';
$h = 'hhh';
function hhh(&$c){
echo ++$c;
}
call_user_func_super($h,$c);
echo $c.'<br/>';
class nnn{
function hhh(&$c){
echo ++$c;
}
}
$h = [new nnn,'hhh'];
call_user_func_super($h,$c);
echo $c.'<br/>';
其中call_user_func_super就是自定义的 函数,可以使用自定义变量。输出:
22 33 44
当然这里面只使用了一个自定义变量,如果多个,可自行更改就可以了。