annotations - PhpStorm:继承方法返回类型的注释?

标签 annotations phpstorm intellisense

使用 Behat 子上下文类,我需要从主上下文调用一个方法,例如$this->getMainContext()->fooBar() . PhpStorm 非常合理地警告我 fooBar()不存在,因为它期望 getMainContext()返回 ExtendedContextInterface ,不是我的具体FeatureContext .

有没有办法注释我的子类来告诉 PhpStorm getMainContext()实际上返回我的具体类?

一种解决方案是覆盖 getMainContext()只是为了有一个方法来添加我自己的 PHPDoc,从而指定不同的返回类型,但是添加一个方法只是为了在 IDE 中获得更好的代码意义是可怕的。

顺便说一句,我知道这有点老套,理论上我的子上下文不应该依赖于我的主要上下文具有特定的具体实现;实际上,尽管 Behat 并没有做到这一点。

最佳答案

对类使用标准的@method 注释:

 /**
  * @method FeatureContext getMainContext()
  */
 class SubContext extends BehatContext
 {
     public function foo()
     {
          $this->getMainContext()->bar();
     }
 }

关于annotations - PhpStorm:继承方法返回类型的注释?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20992123/

相关文章:

ide - 使用 PhpStorm 在同一个项目中添加多个文件夹

git - 如何从 phpstorm 的本地 git 存储库中删除提交?

qt - Qt Creator 中的功能图标是什么意思?

python - 用于 visual studio 的 python 工具中的 Intellisense

java - Android 注释没有被正确理解

java - 注释未在带有 cucumber-jvm 的 SharedDriver 中触发

php - 不要将 PHP 与 HTML 对齐 - 单独的缩进 : how?

.net - 有什么方法可以在 Brace ( } ) 完成时禁用 ReSharper Web Form/MVC (.aspx) 代码格式?

java - @com.sun.istack.internal.NotNull 注释

spring - mvc :annotation-driven does not work in Spring