如何用PHPStan表示JSON-like结构的递归类型?
如何在PHPStan中定义可识别的递归类JSON类型
在对接JSON API的PHP应用中,类JSON(JSON-like)结构的递归类型可以通过PHPStan支持的**类型别名(Type Aliases)**来简洁定义,无需重复嵌套书写复杂的类型声明。
实现步骤:
- 在PHPStan配置文件(如
phpstan.neon)中定义递归类型别名:
parameters: typeAliases: JsonValue: 'null|scalar|array<JsonValue>'
- 在代码的PHPDoc注解里直接使用这个别名:
/** * @return JsonValue */ public function normalize(): mixed { // ... }
关键说明:
- 方法的原生返回值声明用
mixed即可,因为PHP本身不支持自定义递归类型,PHPDoc中的JsonValue会被PHPStan正确识别解析。 - 这个类型别名完全贴合JSON结构的递归定义:值可以是
null、标量类型,或者元素为JsonValue的数组,完美匹配你需要的递归结构。 - 确保你的PHPStan版本在1.0及以上,该版本开始支持递归类型别名的定义。
内容的提问来源于stack exchange,提问作者linepogl
相关产品推荐
相关产品推荐

