好的,标题很难理解,但我试图了解后期静态绑定,我看到了这个答案 https://stackoverflow.com/a/35577069/1640606
这显示了这两个示例之间的区别:
注意,自我::$c
class A
{
static $c = 7;
public static function getVal()
{
return self::$c;
}
}
class B extends A
{
static $c = 8;
}
B::getVal(); // 7
后期静态绑定,注意static::$c
class A
{
static $c = 7;
public static function getVal()
{
return static::$c;
}
}
class B extends A
{
static $c = 8;
}
B::getVal(); // 8
现在,我明白了这一点,但我不明白的是,为什么第B::getVal(); // 8
一个得到getVal
from class A
,但似乎得到了 class 中定义的值B
。
所以,`B::getVal();` 获取的是类的方法,但获取的是第二个类的值。我的问题是,这是后期静态绑定的真正预期目的吗?它有助于解决什么问题?