Ошибка разбора: синтаксическая ошибка, неожиданный T_STATIC

class Employee 
{
    public static $favSport = "Football";

    public static function watchTV()
    {
        echo "Watching ".static::$favSport;
    }
}

class Executive extends Employee 
{
    public static $favSport = "Polo";
}

echo Executive::watchTV();

Ошибка разбора: синтаксическая ошибка, неожиданный T_STATIC в строке 7

Почему я получаю ошибку разбора и как ее исправить? Спасибо!

2 ответа

Решение

Ошибка разбора здесь:

echo "Watching ".static::$favSport;

потому что поздние статические привязки были введены в PHP v5.3. Ваша версия php (<5.3) не распознает static::$favSport,

Я не могу придумать способ исправить это для PHP старше 5.3, кроме как с наследованием объектов (что само по себе не является исправлением, так как оно не имеет ничего общего с static)...

У меня была такая же проблема, но я использовал self вместо статического для моей версии php, которая 5.2.1 намного старше, чем 5.3 http://php.net/manual/en/language.oop5.late-static-bindings.php

Другие вопросы по тегам