-2
次のコードはExample #4 from the PHP documentation on late static bindingsです。PHPの静的バインディング
<?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();
私の質問は、出力が "ABC"ではなく "ABC"である理由です。あなたの助けを期待する!
__CLASS__がCを返すように、関数はCのスコープ内で実行されているため、__CLASS__はC –
を返しています。(帰属なしでコピーした)ドキュメンテーションは、転送と非転送の違いを説明していますその仕組みについて助けが必要な場合は、この例とこの例の説明が記載されているドキュメントがあなたの質問に対処しない理由を説明してください。 –