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

我能告诉PhpStorm函数的返回类型是什么吗?,phpstorm,Phpstorm,因此,如果我有一个函数,并且在PHPDoc中我指定它将返回一个SqsProcessResult对象,然后我调用一个函数来创建一个新的对象,但是该函数的PHPDoc表示返回类型为对象(因为它是一个通用工厂函数)PhpStorm抛出一个橙色警告 我是否可以注释或以其他方式告诉PhpStorm返回类型将是SqsProcessResult?是的,您可以。。但由于问题的性质,它可能不是最干净/优雅的解决方案(至少其他人会这么说) 很少有选择: #1.只需取消对该行的检查 将插入符号置于突出显示的区域,

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


我是否可以注释或以其他方式告诉PhpStorm返回类型将是
SqsProcessResult

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

很少有选择:


#1.只需取消对该行的检查

  • 将插入符号置于突出显示的区域,然后按Alt+Enter(或通过“灯泡”图标获得相同的菜单)
  • 找到最合适的入口。。然后按向右箭头键(或鼠标单击小三角形图标)展开子菜单
  • 一旦出现——选择
    Suppress for statement
    选项——一个新的内联PHPDoc注释将添加到tat行的正上方,指示PhpStorm忽略下一行中的特定检查
将是这样的:

/** @noinspection PhpIncompatibleReturnTypeInspection */
return \Yii::createObject(...);
  • 优点:IDE端没有警告
  • 缺点:额外的PHPDoc注释以满足IDE(考虑到具体情况需要)

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

添加类似以下内容,而不是现有的单行:

/** @var SqsProcessResult $res */
$res = \Yii::createObject(...);
return $res;
  • 赞成者:无可奉告
  • 缺点:额外的变量(还有额外的PHPDoc注释)基本上没有理由
此方法主要用于较长的方法中,在函数体的开头/中间创建此类变量(generic
Object
),然后在以后使用


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


这就是很多工具的工作原理:用于Laravel的IDE帮助程序、Symfony帮助程序、DI容器帮助程序等

谢谢!第一个选项是我希望避免创建纯粹用于代码检查的变量。仅供参考,注释为
/**@noinspection PhpIncompatibleReturnTypeInspection*/
检查更新的答案--选项3。如果做得好——不需要任何评论(但你最好在Yii专用论坛上问这个问题——我想他们应该已经有了解决方案)。不是这个。。。但在这些行中: