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