Почему позднее статическое связывание не работает с переменными в PHP 5.3?

Давайте начнем с некоторого кода:

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

7
задан BoltClock 14 May 2011 в 07:31
поделиться