PHP 中 call_user_func 的使用

call_user_func函数类似于一种特别的调用函数的方法,使用方法如下

  • 第一种情况:

function set_max($a,$b)  
{
   if($a>$b)
     echo $a;
   else
    echo $b;
}
call_user_func('set_max', "111","222");//结果为222

此时 第一个参数 set_max 作为call_user_func 的回调函数使用,$a=111,$b=222

  • 第二种情况

class a
{
    function b($c)
    {
        echo $c ;
    }
}
$num = 200 ;
call_user_func(array('a','b'),$num);//结果为200

此时第一个参数为一个数组 那么 回调就是 a类里面的b方法,num作为参数传到b方法里面。省去了实例化a的过程。
说到这里就不得不再看看 call_user_func_array, 其实call_user_func_arraycall_user_func 类似 使用如下:


function set_max($a,$b)
{ 
   if($a>$b) 
      echo $a;
   else 
      echo $b; 
}
 call_user_func_array('set_max',array(111,222));
 //结果222

call_user_func 看起来直观一点。 而call_user_func_array 对类里面方法的使用则如下:


class test
{
    function set_max($a,$b)
   {
       if($a>$b)
          echo $a;
       else 
         echo $b;
   }
}
call_user_func_array(array('test','set_max'),array(111,222));
//结果同样为222

原文地址:https://segmentfault.com/a/1190000016250746

posted @ 2018-11-16 21:02  sfornt  阅读(600)  评论(0编辑  收藏  举报