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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 05:52:02