2012-08-24 34 views
0

它有什麼含義嗎?靜態::關於私人會員

public static function a(){ 

    static::_b(); 

} 

private static function _b(){ 

} 

靜態這裏是一樣在任何情況下的自我,因爲你不能覆蓋子類中的私有函數,對不對?

+1

1)不能覆蓋靜態方法/函數(它是隱藏,不重寫)。 我不在你的陳述中與你「靜態在這裏和自己一樣」,你是什麼意思?對我來說,你的'static :: _ b();'看起來像一個隱藏外部定義的函數_b()' –

回答

2

正如Germann Arlington在評論中所說。一個子類可以自己實現_b() - 即使具有不同的可見性。

<?php 
class Foo { 
    public static function a() { static::_b(); } 
    private static function _b() { echo 'Foo'; } 
} 

class FooEx extends Foo { 
    public static function _b() { echo 'FooEx'; } 
} 

FooEx::a(); 

打印FooEx

+0

因爲一些奇怪的原因,我一直認爲你不能重寫(或隱藏)任何靜態方法。每天都是學校的一天。 +1 – DaveRandom