2010-08-09 157 views
9

如果我有一個PHP類像這樣:函數指針指向靜態類成員?

class A 
{ 
    public static function Method() 
    { 
     return "x"; 
    } 
} 

我知道,我可以訪問此:

echo A::Method(); 

但我將如何去創造一個函數引用到這個方法?我試過這樣的:

$func = "A::Method"; 
echo $func(); 

但它給我一個運行時錯誤。那麼,這在PHP中可能嗎?如果是這樣,怎麼樣?謝謝! :)

回答

8

兩個選項:

  • call_user_func("A::Method");
  • $func = function() { return A::Method(); }; echo $func()

它的計劃(但它可能會更改)能在做到這一點與反思下一個版本的PHP:

$srm = new ReflectionMethod('A::Method'); 
$func = $srm->getClosure(); 
$func(); 
+0

謝謝,這回答了我的問題。 :) – qJake 2010-08-09 20:35:30

+0

'getClosure'方法在PHP 5.4中可用。請注意,儘管大約50%的服務器仍在使用5.3 – Twifty 2014-01-23 22:27:30