2011-02-10 10 views
4

私は、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::$varself::$varに置き換えると、Eclipseエラーが消えてしまいますが、コードが機能しません。

Eclipseにこれらがエラーではないと納得させるにはどうすればよいですか?

のEclipseは、PHP開発者の バージョンのために:ヘリオスサービスリリース1 ビルドID:20100917から0705 64のビットのCentOS

+2

php 5.3を使用するように設定されていますか?ウィンドウ>環境設定> PHP>実行可能ファイルとインタプリタをチェックします。 – Gordon

+0

Eclipseは、PHP Intepreterのバージョンを5.1/5.2に設定します。デフォルトではIIRCです。 – netcoder

+1

@Gordon:私は持っていると思ったが、それは立ち往生していないようだ。今働いている。迅速な修正をありがとう! – dnagirl

答えて

7

Late Static Bindingは、PHP 5.3で導入されました。 Window> Preferences> PHP> Executables and Interpreterを選択して、EclipseがPHP 5.3を使用していることを確認します。

enter image description here

+1

+1のスクリーンショット(実際には、とにかく私から+1があったが、私はそれが好きだ)。 –

+0

すばらしい、ありがとう! –

1

static::の使用はPHP 5.3で導入されました。

私の推測では、PHP 5.2のルールに従ってEclipseが解析されていると思います。いずれか、またはEclipseで5.3ルールを実装したときの監督。

どちらの方法でも、新しいルールセットを使用してEclipseをアップグレードまたはパッチ適用して、5.3構文を正しく解析できるようになる場合があります。