Давайте начнем с некоторого кода:
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 отлично работает со статическими методами, поэтому я предположил, что она произведет ту же магию на статические переменные. Ну, кажется, нет. В приведенном выше примере распечатывается не «красный», а затем «зеленый», как я сначала ожидал, а «зеленый» и «зеленый». Почему это не работает с переменными, когда работает с методами? Есть ли другой способ добиться желаемого эффекта?