我使用PhpStorm在以下函数中自动添加了返回类型:
/**
* @return \Generator|null
*/
function yieldTest(): ?\Generator
{
yield from [1, 2, 3];
}
我的问题:为什么在null
旁边添加\Generator
选项?
我看不到此方法返回null的方法,所以我想知道我是否正在以yield
的方式忽略某些内容,或者这是否是PhpStorm的怪癖并且可以安全地弃用?
更新:
为了澄清-我在问为什么PHPStorm生成的返回类型为?\Generator
。
我了解它随后将null
添加到了php doc @return
标记中,因为在?
上。
更新2:
这是生成额外位之前测试文件的完整代码:
class yieldTestClass
{
public function yieldTest()
{
yield from [1, 2, 3];
}
}
这是从方法名称的上下文菜单中选择“声明返回类型”后的代码:
class yieldTestClass
{
public function yieldTest(): ?\Generator
{
yield from [1, 2, 3];
}
}
我不确定这是IDE中的本机功能还是来自插件,但我想如果它是插件https://plugins.jetbrains.com/plugin/7622-php-inspections-ea-extended-
尽管有同样的问题。
答案 0 :(得分:2)
?
的意思是“返回类型声明不是强制性的,可以从理论上省略”。如果确实返回null,则PHPStorm不会进行动态分析。
从PHP 7.1.0开始,可以通过添加前缀将返回值标记为可为空 带问号的类型名称(?)。这表示 函数返回指定的类型或NULL。
参考:http://php.net/manual/en/functions.returning-values.php
考虑代码示例:
/**
* @return Generator|null
*/
function yieldTest(): ?\Generator
{
yield from [1, 2, 3];
}
/**
* @return Generator
*/
function yieldTest(): \Generator
{
yield from [1, 2, 3];
}
答案 1 :(得分:1)
该检查和预期的修复(添加的代码)由 Php检查(EA扩展)插件提供。
请向插件作者报告:https://github.com/kalessil/phpinspectionsea/issues