跳至正文

更新日志 2.2.0 — 2025 年 9 月 29 日

值得注意的新功能

映射错误消息改进

反馈在映射错误消息方面得到了改进,特别是故障节点的预期签名。

这摆脱了臭名昭著的?每当类型中存在对象时就会使用它,从而导致不完整和误导性的消息。

新消息示例:

final class User
{
    public function __construct(
        public string $name,
        public int $age,
    ) {}
}

(new MapperBuilder())
    ->mapper()
    ->map(User::class, 'invalid value');

// Could not map type `User`. An error occurred at path *root*: Value
// 'invalid value' does not match `array{name: string, age: int}`.

新功能

  • 改进映射错误消息类型签名 ( ce1b0a )

错误修复

  • 防止non-empty-list中出现未定义的值 ( 9739cd )
  • 在映射期间正确检测嵌套的无效类型( ad756a )
  • 对无效的可为空标量值使用正确的错误消息 ( b84cbe )

其他

  • 读取下一个类型( da0de0 )时在类型解析中添加保护措施
  • 改进发现意外标记时的类型解析错误( 5ae904 )
  • 减轻类型初始化 ( 6f0b3f )
  • 以与array相同的方式解析iterable类型 ( 6291a7 )
  • 修改类型遍历的使用方式( 20f17f )
  • 将默认异常错误代码设置为unknown ( c8ef49 )