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 static 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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With