我可以告诉PhpStorm函数的返回类型是什么吗?

时间:2017-03-07 13:33:41

标签: phpstorm

enter image description here

因此,如果我有一个函数并且在PHPDoc中我指定它将返回一个SqsProcessResult对象,那么我调用一个函数来创建一个新的对象但该函数的PHPDoc说返回类型为Object(因为它是一个通用的工厂函数)PhpStorm会抛出橙色警告。

我可以注释或以其他方式告诉PhpStorm返回类型为SqsProcessResult吗?

1 个答案:

答案 0 :(得分:8)

是的,你可以..但由于问题的性质,它可能不是最干净/优雅的解决方案(至少这是别人可能会说的)。

几个选项:

#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

这是相当多的工具:Laravel的IDE助手,Symfony助手,DI Container助手等