PHP 中 call_user_func 的使用

舊夢發癲發表於2019-02-16

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

相關文章