【问题标题】:Eclipse completions - @var (PHPDoc) questionEclipse 完成 - @var (PHPDoc) 问题
【发布时间】:2023-03-26 12:35:01
【问题描述】:

我有一个奇怪的问题。

当我在模型加载方法中使用@return Model\Article 时,我会在 Eclipse 的自动完成中看到模型的方法。

模型加载方法返回更多对象,所以我希望它到@return My\BaseModel,然后为每个模型专门放置/* @var $model Model\Article */(当我使用它时)。

问题是 @return Model\Article 运行良好(我看到 Model\Article + My\BaseModel 方法)但另一种方式(@return My\BaseModel 和内联 /*...*/)不能 - 它说'否完成可用'。

我尝试在 $model = ...; 之前和之后放置内联注释,但都没有成功。

对不起,我的英语不好-希望你能理解。

感谢您提供的任何帮助,最好的问候,Jakub Chábek。

【问题讨论】:

    标签: php eclipse variables phpdoc phpeclipse


    【解决方案1】:

    编年史:我们做错了什么......

    全部:这里有相同问题的错误报告,但已解决 - 我试过了,它有效!

    这是工作示例:

    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->
    }
    

    所以我这边一定有一个错误......但无法真正找到它:D

    【讨论】:

    • 您想知道 ***** 问题出在哪里吗?检查这个.../* @var $article Model\Article */ 和这个/* @var $article \Model\Article */ ...哇,我怎么不能试试?!
    【解决方案2】:

    我以前也遇到过这个问题。从来没有找到一个简单而干净的解决方案。当你真的非常渴望代码完成时,将赋值放在永远无法到达的位置:

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

    Eclipse 不会意识到此代码将永远不会被执行并为您提供适当的代码完成。

    【讨论】:

    • 哇老兄,你在开玩笑吗?这怎么可能 ? :D 它让我一边笑一边哭……为什么会这样?是错误还是有原因?
    • 好吧,尝试让 Eclipse 了解可以访问代码的哪些部分是不可行的。 if (false) 只是一个非常具体的案例,因为很明显会发生什么。
    • 但我真的不明白为什么 Eclipse 会忽略 /* @var ... */ 并在满足此条件时实现它...
    • 我也不知道为什么它会忽略它。而且 Eclipse 并没有“实现”我的解决方案。它只识别明显的类型分配而不识别明显的程序流。我只是将两者结合起来让 eclipse 做我想做的事^^。
    • 我真的不知道该怎么办......写这个很烦人,如果我分发这个代码我会看起来像个白痴:我认为我会责怪 Eclipse 开发人员然后忘记那......但谢谢你的回答!真的很有趣……
    猜你喜欢
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 2011-12-05
    相关资源
    最近更新 更多