如何使用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
相关产品推荐
相关产品推荐

