2017-12-14 15 views
-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"である理由です。あなたの助けを期待する!

+0

__CLASS__がCを返すように、関数はCのスコープ内で実行されているため、__CLASS__はC –

+1

を返しています。(帰属なしでコピーした)ドキュメンテーションは、転送と非転送の違いを説明していますその仕組みについて助けが必要な場合は、この例とこの例の説明が記載されているドキュメントがあなたの質問に対処しない理由を説明してください。 –

答えて

0

私は、あなたが「転送していない電話」について詳しく知りません。linkにアクセスし、必要なものを見つけると思います。

+0

リンクを指すのではなく、答えの完全な説明を含めることをお勧めします。答えとしてあなたが提供しているものが明確ではありません。 – Nick

関連する問題