'自'在父类方法中

时间:2014-04-25 19:53:27

标签: php class inheritance parent self

请参阅以下示例(摘自上一个问题):

    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'

有没有办法让B来电test()self会调用B的{​​{1}}函数?

1 个答案:

答案 0 :(得分:5)

您所谈论的内容称为Late Static Binding,自PHP 5.3开始提供。您需要做的就是使用static而不是self

class ClassA {
    public static function test() { return static::getVar(); }
}
class ClassB  extends ClassA {
    public static function getVar() { return 'B'; }
}

echo ClassB::test(); // prints 'B'