1

我是 PHPStan 的新手,遇到了一个我无法理解的问题。

所以我有一个函数,它应该返回一个看起来像这样的数组:array<a|b|c|d..., mixed>(a、b、c、d 都是类常量),但在函数中,数组看起来像这样:

/**
 * @return array<SomeConstants::*, mixed>
 */
function doSomething(){

return [
'key1'=>'value1'
'key2'=>'value2'
...
];

}

我收到以下错误:

Method doSomething() should return array<a|b|c|d...,mixed> but returns array('key1'=>SomeObject|null,'key2'=>SomeObject2|null)

如何让 PHPStan “相信”这个数组“看起来像”@return doc 标记中定义的数组?

我尝试了什么?

  • /**@var array<SomeConstants::*> $array**/
  • /**@phpstan-var array<SomeConstants::*> $array**/

两者都工作正常,但根据我的代码审查员的说法,我们只是强迫 PHPStan 相信数组中不存在的键存在,所以这是一个“肮脏”的解决方案......

4

0 回答 0