我可以告诉PhpStorm函数的返回类型是什么吗?
问题描述:
所以,如果我有一个函数,并在PHPDoc的我指定它会返回一个SqsProcessResult
对象,然后调用一个函数来创建这些对象的新的,但该功能的PHPDoc的说的Object
返回类型(因为它是一个通用的工厂功能)PhpStorm发出橙色警告。
我可以注释或以其他方式告诉PhpStorm返回类型将是SqsProcessResult
?
答
是的,你可以...但由于问题的性质,它可能不是最干净/优雅的解决方案(至少这是别人可能会说的)。
几个选项:
#1。只要抑制这条线的检查。在高亮区域
- 将插入符号,按Alt + Enter键(或通过“灯泡”图标会得到相同的菜单)
- 找到最适合的入门..并按箭头向右键(或鼠标点击这个小三角形图标)展开子菜单
- 一旦出现 - 选择
Suppress for statement
选项 - 一个新的内嵌PHPDoc注释将被添加到正上方,指示PhpStorm忽略下一行中的特定检测。
会是这样的:
/** @noinspection PhpIncompatibleReturnTypeInspection */
return \Yii::createObject(...);
- 优点:无论从IDE侧警告
- 缺点:额外PHPDoc的评论,以满足IDE(这是需要考虑的情况下)
#2。使用一些中间变量,您可以键入提示。
添加这样的事情,而不是现有的单行:
/** @var SqsProcessResult $res */
$res = \Yii::createObject(...);
return $res;
- 优点:无抑制评论
- 缺点:额外的变量(现在仍然额外PHPDoc的注释)基本上没有理由
这一个主要可以用于更长的方法,其中这样的变量(通用Object
)将在函数体的开始/中间创建,然后稍后使用。
#3。玩.metadata功能,并提供实际\Yii::createObject()
的解析逻辑(所以IDE根据输入参数选择合适的类)。
https://confluence.jetbrains.com/display/PhpStorm/PhpStorm+Advanced+Metadata
这是怎么了不少工具工作:IDE帮手Laravel,Symfony的帮手,DI容器佣工等
谢谢!第一种选择是我正在寻找的,以避免纯粹为代码检查创建变量。仅供参考,注解为'/ ** @noinspection PhpIncompatibleReturnTypeInspection * /' –
检查更新的答案 - 选项#3。如果做得好 - 不需要评论(但你最好在Yii专用论坛上提问 - 他们应该有一个解决方案,我会假设)。不是这一个...但是在这些行中:http://yiifeed.com/news?id=72 – LazyOne