почему Eclipse возражает против `static :: $ var`? - PullRequest
4 голосов
/ 10 февраля 2011

У меня есть следующая статическая функция в классе PHP:

static function __callStatic($method,$args){
    $called=NULL;
    if(empty(static::$collection)) static::slurp();
    if(method_exists(static::$objtype,$method)){
        foreach(static::$collection as $obj){
            $called[]= call_user_func_array(array($obj, $method), $args);
        }
    } else if (property_exists(static::$objtype,$method)){ //$method isn't a method, it's a property
        foreach(static::$collection as $obj){
            $called[]= $obj->$method;
        }
    } else if($method=='collection'){
        $called=static::$collection;
    } else {
        throw new ZException("$method does not exist");
    }
    return $called;
}

Статические переменные все определены, но, возможно, не установлены. Код, кажется, делает то, что я хочу, и не выдает ошибок любого уровня. Но все же моя новая установка Eclipse (Helios) PDT пометила каждый экземпляр static::$var как «неожиданную статическую» ошибку. Если я заменю static::$var на self::$var, ошибка Eclipse исчезнет, ​​но тогда код не будет работать.

Как мне убедить Eclipse, что это не ошибки?

Eclipse для разработчиков PHP Версия: Helios Service Release 1 Идентификатор сборки: 20100917-0705 на 64 битной CentOS

Ответы [ 2 ]

7 голосов
/ 10 февраля 2011

Позднее статическое связывание было введено в PHP 5.3.Проверьте Window> Preferences> PHP> Исполняемые файлы и интерпретатор, чтобы убедиться, что Eclipse использует PHP 5.3.

enter image description here

1 голос
/ 10 февраля 2011

Использование static:: было введено в PHP 5.3.

Я полагаю, что Eclipse выполняет синтаксический анализ в соответствии с правилами PHP 5.2.Или это, или недосмотр, когда они внедрили правила 5.3 в Eclipse.

В любом случае, вы можете обновить или исправить Eclipse с новым набором правил, чтобы заставить его синтаксически синтаксически анализировать 5.3.

...