今のところ私は少し愚かなことを理解していましたが、今は何も理解していないことが分かります。私はとても混乱しており、私は理解するのに苦労し、私はできません。誰かがこのプログラムを自己、親、静的、そしてどのように使うのかを説明することができます 私が行う最小限の変更は、それがなくても結果を変えます。何が起こっているのか理解できません。 おかげhttp://docs.php.net/language.oop5.late-static-bindings自己、親、静的およびどのように使用する場合は?
<?php
class A {
public static function foo() {
static::who();
}
public static function who() {
echo __CLASS__."\n";
}
}
class B extends A {
public static function test() {
A::foo();
parent::foo();
self::foo();
}
public static function who() {
echo __CLASS__."\n";
}
}
class C extends B {
public static function who() {
echo __CLASS__."\n";
}
}
C::test();
?>
からたくさん..
コードアウトプットは以下のとおりです。http://php.net/manual/en/language.oop5.static.phpで
A
C
C
ありがとうございました –
奇妙な!私は後者のバージョンがデフォルトであると思っていたでしょう。つまり、なぜ私の子クラスはメソッドを定義して、親バージョンをデフォルトで呼び出すのでしょうか?しかし、私は期待していたようなPHP標準が何であったかは思い出せません。 – jsh
誰かがもっと説明できますか?両方の長所と短所を説明してください。 – Rafael