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

如何使用PHPStan定义由参数指定的动态数组键?

解决PHPStan动态键返回类型注解问题

要在PHPDoc中用PHPStan正确定义这个动态键的返回数组类型,需要借助**模板类型(Template Type)**关联参数$collectionKey和返回数组中的对应键,具体写法如下:

/**
 * @template T of string
 * @param string $tableName
 * @param T $collectionKey
 * @return array{
 *     count: int<0, max>,
 *     T: list<array{
 *         name: string,
 *         value: string,
 *     }>
 * }
 */
protected function getAllData(string $tableName, string $collectionKey): array
{
    // 函数实现...
}

关键说明:

  • @template T of string:声明一个模板类型T,限定它只能是字符串类型,对应$collectionKey的类型范围。
  • @param T $collectionKey:将参数$collectionKey的类型绑定到模板T,建立参数与返回值的关联。
  • 返回类型中的T:直接引用该模板类型,告诉PHPStan返回数组中存在一个与$collectionKey值完全对应的键,其值为指定结构的列表。

这样PHPStan就能准确识别返回数组的动态键类型,在代码调用时提供正确的类型提示和校验。

内容的提问来源于stack exchange,提问作者Markus Bischof

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 02:15:54