You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 04:18:15