2016-04-25 17 views
1

はとても例継承クラスでオーバーライドされた静的メンバーにアクセスする方法は?ここで

class derp { 
    public static $importantVariable = "default"; 
    public function doSomethingImportant() { 
     echo self::$importantVariable; 
    } 
} 

class fancy extends derp { 
    public static $importantVariable = "special"; 
} 

$fancyInstance = new fancy(); 
$fancyInstance->doSomethingImportant(); 

大丈夫です、私は静的メンバ「importantVariable」を無効にして、継承された関数がオーバーライド値の代わりに、基本クラスの値を使用するようにそれを作りたいです。

この場合、「デフォルト」と表示されますが、「特別」と言いたいのですが、オーバーライドされた値を参照するにはどうすればよいですか?

答えて

1

代わりのselfは、staticを使用します。

class derp { 
    public static $importantVariable = "default"; 
    public function doSomethingImportant() { 
     echo static::$importantVariable; 
    } 
} 

それが実行時に使用されている具象クラスで定義された値になりますようにstaticキーワードがlate static bindingを利用していますselfキーワードの場合のように、単に参照が行われるクラスではなく、

関連する問題