Phpstan中如何定义键为字符串、值为特定对象的数组类型?
在PHPStan中定义键为字符串、值为特定对象的数组类型
你之前用的array{string, MyObj}是元组类型的写法,PHPStan会将其识别为固定顺序的索引数组(第一个元素是字符串,第二个是MyObj对象),这和你想要的“键为字符串、值全为MyObj”的关联数组不符。
正确的标注方式有两种:
标准PHPDoc注解写法:
/** * @param array<string, MyObj> $accounts */ function processAccounts(array $accounts): void { // 函数逻辑 }PHP 8.0+ 原生类型声明写法(无需PHPDoc也能被PHPStan识别):
function processAccounts(array<string, MyObj> $accounts): void { // 函数逻辑 }
array<string, MyObj>这种语法明确告诉PHPStan:该数组的所有键都是字符串类型,所有值都是MyObj类型的对象,完全符合你的需求。
内容的提问来源于stack exchange,提问作者Majesty
相关产品推荐
相关产品推荐

