1

PHP で静的クラスを拡張し、親クラスが「self::」を参照する場合、これは拡張されたクラスの自己を参照しますか?

たとえば、

<?php 
Class A
{
    static $var  
    public static function guess(){self::$var = rand(); return $var}
}        

Class B extends Class A
{
    public static function getVar(){return self::$var}
}

B::guess(); を実行した場合 次に B::getVar();

A::$var または B::$var に格納されている Var の値は?

ありがとうございました。

4

2 に答える 2

6

Late static bindingは PHP 5.3 で導入され、この動作を制御できるようになりました。

于 2010-09-16T02:21:44.973 に答える
3

テストは簡単です。

class ClassA {
    public static function test(){ self::getVar(); }
    public static function getVar(){ echo 'A'; }
}        

class ClassB extends ClassA {
    public static function getVar(){ echo 'B'; }
}

ClassA::test(); // prints 'A'

ClassB::test(); // also prints 'A'

...それが役立つことを願っています:)

于 2010-09-16T02:16:42.383 に答える