2011-08-10 36 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