更新日志 0.14.0 — 2022 年 9 月 1 日¶
重要变更¶
在此版本之前,日期对象创建的行为非常固执己见:测试了大量日期格式,如果其中一个有效,则使用它来创建日期。
这种方法导致了两个问题。首先,它导致了(较小的)性能问题,因为许多日期格式可能没有经过任何测试。更重要的是,无法定义允许哪些格式(并最终拒绝其他格式)。
现在可以在MapperBuilder中使用新方法:
(new \CuyZ\Valinor\MapperBuilder())
// Both `Cookie` and `ATOM` formats will be accepted
->supportDateFormats(DATE_COOKIE, DATE_ATOM)
->mapper()
->map(DateTimeInterface::class, 'Monday, 08-Nov-1971 13:37:42 UTC');
请注意,旧的行为已被删除。从现在开始,默认只接受有效的时间戳或 ATOM 格式的值。
如果需要并帮助迁移,可以注册以下已弃用的构造函数以重新激活以前的行为:
(new \CuyZ\Valinor\MapperBuilder())
->registerConstructor(
new \CuyZ\Valinor\Mapper\Object\BackwardCompatibilityDateTimeConstructor()
)
->mapper()
->map(DateTimeInterface::class, 'Monday, 08-Nov-1971 13:37:42 UTC');
⚠ 重大变更¶
- 引入自定义日期格式的构造函数 ( f232cc )
新功能¶
错误修复¶
- 允许在指定结构的数组中使用尾随逗号 ( bf445b )
- 正确获取文件系统缓存条目 ( 48208c )
- 检测无效的构造函数句柄类型( b3cb59 )
- 在类型解析器中以区分大小写的方式处理类( 254074 )
- 处理并发缓存文件创建 ( fd39ae )
- 处理类定义中继承的私有构造函数( 73b622 )
- 递归处理无效节点( a401c2 )
- 防止 PSR-16 缓存键中存在非法字符 ( 3c4d29 )
- 正确处理同一类的可调用对象( ae7ddc )