父类方法中的"自我"

Gho*_*der 1 php inheritance class 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'
Run Code Online (Sandbox Code Playgroud)

有没有一种方法,这样当B调用test(),self将调用BgetVar()函数?

koj*_*iro 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'
Run Code Online (Sandbox Code Playgroud)