friendlessstar 发表于 2018-12-11 14:07:44

PHP后期静态绑定(self与static)

后期静态绑定

  “后期绑定”的意思是说,static:: 不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为“静态绑定”,因为它可以用于(但不限于)静态方法的调用。


self:: 的限制


后期静态绑定的用法



[*]所谓延迟静态绑定,顾名思义,静态调用时::符号左侧的部分的的绑定是延迟,也就是说不再被解析为定义当前方法所在的类,而是在实际运行时计算的。


class A {
public static function who() {
echo __CLASS__.PHP_EOL;
}
public static function test() {
self::who();
}
public static function test2() {
static::who();
}
}
class B extends A {
public static function who() {
echo __CLASS__;
}
}
B::test();//A
B::test2();//B


页: [1]
查看完整版本: PHP后期静态绑定(self与static)