2015-08-30 73 views
0

我想從同一類中的另一個靜態方法獲取靜態方法的引用,但PHP將這兩行(請參見下面的示例代碼)解釋爲對常量的訪問。在PHP中無法獲得對靜態方法的引用嗎?PHP:獲取靜態方法參考

class foo 
{ 
    public static function test() 
    { 
     self::bar(); // calling (not referencing) works 
     $bar_reference = self::bar; // Error: Undefined class constant 'bar' 
    } 

    public static function bar() 
    { 
     echo "hello"; 
    } 
} 

foo::test(); 
$bar_reference = foo::bar; // Error: Undefined class constant 

只是爲了澄清一下:我不想調用靜態方法 - 我只是想獲得對它的引用。

+1

PHP不必標識符引用。你只能引用變量。或者爲回調使用字符串標識符。 – mario

+0

@mario:對於所有的意圖和目的,字符串化的標識符確實是PHP中的一個參考, – Evert

+0

如果不可行,那麼確定。但我不明白爲什麼這是一個投票我的問題的理由(或者我問了一個錯誤的方式嗎?) – StanE

回答

-1

您可以創建一個callable這樣的:

class foo 
{ 
    public static function test() 
    { 
     $bar_reference = array(__CLASS__, 'bar'); 
     // Call it 
     $bar_reference(); 
    } 

    public static function bar() 
    { 
     echo "hello"; 
    } 
} 

foo::test(); 
$bar_reference = foo::bar(); 
+0

我明確表示,我不想打電話什麼... – StanE

+1

好的。你想用這個參考做什麼? – hek2mgl