作者:我所信仰的感觉 | 来源:互联网 | 2023-02-09 17:56
所以,如果我有一个函数并且在PHPDoc中我指定它将返回一个SqsProcessResult
对象,那么我调用一个函数来创建这些对象的新函数,但该函数的PHPDoc说返回类型Object
(因为它是一个通用工厂函数)PhpStorm抛出橙色警告.
我可以注释或以其他方式告诉PhpStorm返回类型SqsProcessResult
吗?
1> LazyOne..:
是的,你可以..但由于问题的性质,它可能不是最干净/优雅的解决方案(至少这是别人可能会说的).
几个选项:
#1.只需禁止该行的检查.
将插入符号放在突出显示的区域并按Alt + Enter(或通过"灯泡"图标获取相同的菜单)
找到最合适的条目..然后Arrow Right按键(或鼠标单击小三角形图标)以展开子菜单
一旦那里 - 选择Suppress for statement
选项 - 将在tat线上方添加一个新的内联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助手等