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

For*_*ero 3 phpstorm

在此输入图像描述

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

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

Laz*_*One 9

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

几个选项:


#1.只需禁止该行的检查.

  • 将插入符号放在突出显示的区域并按Alt + Enter(或通过"灯泡"图标获取相同的菜单)
  • 找到最合适的条目..然后Arrow Right按键(或鼠标单击小三角形图标)以展开子菜单
  • 一旦那里 - 选择Suppress for statement选项 - 将在tat线上方添加一个新的内联PHPDoc注释,指示PhpStorm忽略下一行中的特定检查.

会是这样的:

/** @noinspection PhpIncompatibleReturnTypeInspection */
return \Yii::createObject(...);
Run Code Online (Sandbox Code Playgroud)
  • 优点:IDE方面没有任何警告
  • 缺点:额外的PHPDoc注释以满足IDE(考虑到环境需要)

#2.使用一些可以在适当位置键入提示的中间变量.

添加这样的内容而不是现有的单行:

/** @var SqsProcessResult $res */
$res = \Yii::createObject(...);
return $res;
Run Code Online (Sandbox Code Playgroud)
  • 优点:没有抑制评论
  • 缺点:基本没有理由的额外变量(还有额外的PHPDoc评论)

这个主要用于较长的方法,其中这些变量(通用Object)将在函数体的开头/中间创建,然后在以后使用.


#3.使用.metadata功能并为实际提供解析逻辑\Yii::createObject()(因此IDE根据输入参数选择正确的类).

https://confluence.jetbrains.com/display/PhpStorm/PhpStorm+Advanced+Metadata

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

  • 谢谢!第一个选项是我想要避免纯粹为了代码检查而创建变量的选项。仅供参考,注释是`/** @noinspection PhpInknownReturnTypeInspection */` (2认同)