让我们从一些代码开始:
class Super {
protected static $color;
public static function setColor($color){
self::$color = $color;
}
public static function getColor() {
return self::$color;
}
}
class ChildA extends Super { }
class ChildB extends Super { }
ChildA::setColor('red');
ChildB::setColor('green');
echo ChildA::getColor();
echo ChildB::getColor();
现在,在 PHP 5.3 中使用static关键字的后期静态绑定非常适用于静态方法,所以我认为它会对静态变量产生同样的魔力。嗯,好像没有。上面的示例并没有像我最初预期的那样打印出“red”然后是“green”,而是打印出“green”和“green”。当它适用于方法时,为什么这不适用于变量?有没有其他方法可以达到我预期的效果?