2014-01-22 45 views
0

的我:回調靜態方法調用

function sayName($param) 
{ 
    echo $param(); 
} 

class Robin 
{ 
    public static $name = "Robin Webber"; 
    public static function bearName() 
    { 
     echo static::$name; 
    } 
} 

sayName(array("Robin", 'bearName')); 

此代碼是有點直覺上我。

傳遞數組到sayNam()究竟如何調用類的靜態方法Robin

任何有關此行爲的PHP文檔參考資料將有所幫助。

+1

http://www.php.net/manual/zh/language.types.callable.php – ajshort

回答

-1

做它:

function sayName(array $params) 
{ 
    $class = array_shift($params); 
    $method = array_shift($params); 

    call_user_func_array($class.'::'.$method,array()); 

    // or call_user_func($class.'::'.$method); 
} 

class Robin 
{ 
    public static $name = "Robin Webber"; 

    public static function bearName() 
    { 
    echo static::$name; 
    } 
} 

sayName(array("Robin", 'bearName')); 
//Robin Webber 

查看更多call_user_funccall_user_func_array

+0

ahahaha,downvoted ....肉湯,誰把減號,它的作品)。 – voodoo417

+0

這不回答這個問題。他們詢問使用數組作爲回調的行爲。而且,這不是使用靜態方法可調參數的唯一方法。 – ajshort

+0

「這不回答這個問題......」那麼這是什麼:)?我幫忙解決問題,並給了鏈接。「..使用數組作爲回調..」 - 什麼是廢話? – voodoo417