这对我来说没有意义:
class A {
public static $value = "a";
public static function get_value(){
return self::$value;
}
}
echo A::$value; // a, this makes sense
echo A::get_value(); // a, this makes sense
class B extends A {
public static $value = "b";
}
echo B::$value; // b, this makes sense
echo B::get_value(); // a? :(
为什么self
指针不能按预期工作,类似于this
?是否有其他关键字可用于实现此目的?
如果我将静态函数添加到B类,它现在可以按预期工作。
class B extends A {
public static $value = "b";
public static function get_value(){
return self::$value;
}
}
echo B::get_value(); // b :)
如果该方法包含多行,则复制+粘贴此功能并在2个位置管理它是没有意义的...
答案 0 :(得分:3)
后期静态绑定:
http://php.net/manual/en/language.oop5.late-static-bindings.php
后期静态绑定通过存储在最后一次“非转发呼叫”中命名的类来工作。
在您的示例中尝试使用static::
关键字而不是self::
。