私は遅い静的バインディングについて頭を悩ませようとしています.いくつかのスタックオーバーフローの質問とマニュアルを読むことで、私が見つけたすべての例(マニュアルを含む)で、メソッドクラス名を直接エコーするものは、子クラスで複製されます。
私の理解では、別のクラスから拡張されたクラスは、その親のすべてのメソッドとプロパティを継承します。したがって、PHP マニュアルの遅延静的バインディングの例で who() メソッドが重複しているのはなぜですか。それがないと、親クラスがエコーされることに気づきましたが、その理由はわかりません。
マニュアルのコードを参照してください...
<?php
class A {
public static function who() {
echo __CLASS__;
}
public static function test() {
static::who(); // Here comes Late Static Bindings
}
}
class B extends A {
public static function who() {
echo __CLASS__;
}
}
B::test();
?>
who() メソッドを書き直す必要があるのはなぜですか。同じでなければならないと思いますか? 前もって感謝します。