【发布时间】:2020-03-01 16:37:14
【问题描述】:
关于如何使用 PhpDoc 注释数组键仍有一个悬而未决的问题:https://github.com/phpDocumentor/phpDocumentor2/issues/650
我尝试了以下符号:
/**
* @return array<string, SomeClass>
* @return SomeClass[string]
*/
public function someMethod(): array { ... }
但 PhpStorm 似乎无法适当地解决这个问题,因此在使用例如
foreach内部对象未知:
foreach($obj->someMethod() as $some) {
$some->methodOfSomeClass(); // PhpStorm -> Method not found
}
我知道我可以使用管道运算符:
@return array<string, SomeClass>|SomeClass[]
我也知道我可以输入提示变量:
/** @var SomeClass $obj */
$obj
但是有没有办法在不使用管道的情况下配置 PhpStorm 以了解数组值类型?
【问题讨论】:
-
当该数组元素将被使用时(当分配给某个变量时)使用
@var内联 - 请参阅 Code Spirit 答案.. 或尝试 deep-assoc-completion 插件(它允许对数组参数/返回进行详细描述)--github.com/klesun/deep-assoc-completion/blob/master/README.md -
"array
" -- AFAIK PhpStorm 可能只解析此语法(不显示警告;对此不是 100% 确定)但实际上并不理解它.请参阅youtrack.jetbrains.com/issue/WI-43843 和可能的youtrack.jetbrains.com/issue/WI-20193 -
自 phpstorm 2020.3 EAP #2 起支持和解析诸如 array
或类型 array 之类的类型
标签: php arrays phpstorm phpdoc type-hinting