开发者

why is Eclipse objecting to `static::$var`?

开发者 https://www.devze.com 2023-02-09 14:11 出处:网络
I have the following static function in a PHP class: static function __callStatic($method,$args){ $called=NULL;

I have the following static function in a PHP class:

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;
}

The s开发者_Go百科tatic variables are all defined but possibly not set. The code appears to do what I want it to and throws no errors of any level. But yet my new installation of Eclipse (Helios) PDT has marked every instance of static::$var as an 'unexpected static' error. If I replace static::$var with self::$var the Eclipse error goes away- but then the code doesn't work.

How do I convince Eclipse that these are not errors?

Eclipse for PHP Developers Version: Helios Service Release 1 Build id: 20100917-0705 on 64 bit CentOS


Late Static Binding was introduced with PHP 5.3. Check Window > Preferences > PHP > Executables and Interpreter to make sure Eclipse is using PHP 5.3.

why is Eclipse objecting to `static::$var`?


The use of static:: was introduced in PHP 5.3.

My guess would be that Eclipse is parsing according to PHP 5.2 rules. Either that, or its an oversight when they implemented the 5.3 rules in Eclipse.

Either way, you may be able to upgrade or patch Eclipse with a new rule set to get it to parse 5.3 syntax correctly.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号