call_user_func()的参数不能为引用传递 自定义替代方法
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
当然这里面只使用了一个自定义变量,如果多个,可自行更改就可以了。
内容由吠品原创/整理/转载,发布在http://www.cnblogs.com/osfipin/,欢迎评论。
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号