2011-08-10 16 views
4

私は奇妙な問題があります。Eclipseの補完 - @var(PHPDoc)の質問

モデルローディング方式で@return Model\Articleを使用すると、Eclipseのオートコンプリートでモデルのメソッドが表示されます。

モデルロードメソッドはより多くのオブジェクトを返すので、私は@return My\BaseModelにしたいと思っています(使用するときには/* @var $model Model\Article */)。それはの「なし補完」を言う -

問題はよく@return Model\Article作品(私はModel\Article + My\BaseModel方法を参照)が、他の方法(@return My\BaseModelとインライン/*...*/)がないということです。

$model = ...;の前後にインラインコメントを挿入しようとしましたが、どちらも機能しませんでした。

私の悪い英語のために申し訳ありません - ご理解いただければ幸いです。

Jakub Chabekさん、ありがとうございました。よろしくお願いいたします。

答えて

5

Chronial:私たちは何か間違ったことをした...

すべて:ここに同じ問題とバグ報告はあるが、それが解消される - 私はそれを試してみましたが、それは動作します!ここで

は実施例である:

namespace test { 
    class AAA { 

     /** 
     * 
     * @return \test\AAA 
     */ 
     static function getInstance() { 
      return new static(); 
     } 
    } 
} 
namespace test2 { 
    class BBB extends \test\AAA { 
     /** 
     * 
     * @return \test2\BBB 
     */ 
     function showme() { 
     } 
    } 
} 

namespace test3 { 
    $aaa = \test2\BBB::getInstance(); 
    /* @var $aaa \test2\BBB */ 
    $aaa-> 
} 

は、だから私の側でmisstakeがなければならない...しかし、実際にそれを見つけることができません:D

+0

あなたはどこに*****の問題があるか知りたいですか?これをチェックしてください... '/ * @var $ article Model \ Article * /' and this '/ * @var $ article \ Model \ Article * /' – grongor

4

私はこれまでにも問題を抱えていました。簡単で清潔な解決策は決して見つかりませんでした。あなたは、コード補完のために本当に必死場合、到達することはありません位置に割り当てを置く:

if (false) $myVar = new MyClass(); 

Eclipseは、このコードが実行されることがないことを認識し、あなたに適切なコード補完を与えることはありません。

+0

すごい男、あなたは冗談されていますか?これはどうですか***? :Dそれは私を笑って、同時に泣く...それはなぜそれのようなものですか?それはバグですか、それとも理由がありますか? – grongor

+0

まあ、あなたのコードのどの部分に到達できるのかをEclipseに理解させることはできません。 'if(false)'は、何が起こるのかが明らかである限り、非常に特殊なケースに過ぎません。 – Chronial

+0

しかし、私はEclipseが/ * @var ... *を無視しているのは本当にわかりません。* /この条件を満たしている間に実装しています... – grongor

関連する問題