2011-08-10 35 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 = ...;之前和之後放置內嵌評論,但都無效。

對不起我的壞英語 - 我希望你明白。

謝謝任何​​形式的幫助,最好的問候,JakubChábek。

回答

5

Chronial:我們做錯了什麼......

所有:這裏是bug報告有同樣的問題,但它解決了 - 我想它和它的作品!

這裏是工作示例:

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 * /'和這個'/ * @var $ article \ Model \ Article * /'...哇,我怎麼不能試試它?! – grongor

4

我以前也遇到過這個問題。從未找到一個簡單而乾淨的解決方案當你的代碼完成真的絕望了,把分配在一個永遠不會被到達的位置:

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

Eclipse將不會意識到這個代碼將永遠不會被執行,並給您適當的代碼完成。

+0

哇,夥計,你在開玩笑吧?這怎麼可能 ? :D它讓我笑和同時哭...爲什麼它的工作是這樣的?它是錯誤還是有其原因? – grongor

+0

那麼,試着讓eclipse知道你的代碼的哪些部分可以到達,這是不可行的。 「if(false)」只是一個非常具體的情況,只要它明顯會發生什麼。 – Chronial

+0

但我真的不明白爲什麼Eclipse忽略/ * @var ... * /並且它在實現它時遇到這種情況... – grongor