是的,你可以这样做,但由于问题本质的特点,它可能不是最干净/优雅的解决方案(至少其他人可能会这么说)。
几个选项:
#1. 只是抑制该行的检查。
Suppress for statement
选项--一个新的内联PHPDoc注释将被添加在该行上面,指示PhpStorm在下一行忽略该特定检查。就像这样:
/** @noinspection PhpIncompatibleReturnTypeInspection */
return \Yii::createObject(...);
#2. 使用一些中间变量,在适当的位置进行类型提示。
在现有的单行代码之外添加类似以下内容的代码:
/** @var SqsProcessResult $res */
$res = \Yii::createObject(...);
return $res;
这个主要可以用在较长的方法中,在这种方法中,这样的变量(通用的Object
)将在函数体的开头/中间被创建,然后稍后使用。
#3. 尝试使用.metadata功能,并为实际的\Yii::createObject()
提供解析逻辑(以便IDE根据输入参数选择正确的类)。
https://confluence.jetbrains.com/display/PhpStorm/PhpStorm+Advanced+Metadata
这是许多工具的工作方式: Laravel的IDE助手,Symfony帮助程序,DI容器帮助程序等
/** @noinspection PhpIncompatibleReturnTypeInspection */
。 - Force Hero