跳至正文

更新日志 1.14.0 — 2024 年 11 月 4 日

重要变更

PHP 8.4 支持🐘

在正式发布之前享受即将推出的 PHP 8.4 版本!

漂亮的 JSON 输出

JSON_PRETTY_PRINT选项现在受 JSON 规范化器支持,并将使用空格和换行符格式化输出:

$input = [
    'value' => 'foo',
    'list' => [
        'foo',
        42,
        ['sub']
    ],
    'associative' => [
        'value' => 'foo',
        'sub' => [
            'string' => 'foo',
            'integer' => 42,
        ],
    ],
];

(new \CuyZ\Valinor\MapperBuilder())
    ->normalizer(\CuyZ\Valinor\Normalizer\Format::json())
    ->withOptions(\JSON_PRETTY_PRINT)
    ->normalize($input);

// Result:
// {
//     "value": "foo",
//     "list": [
//         "foo",
//         42,
//         [
//             "sub"
//         ]
//     ],
//     "associative": {
//         "value": "foo",
//         "sub": {
//             "string": "foo",
//             "integer": 42
//         }
//     }
// }

强制数组作为 JSON 输出中的对象

JSON_FORCE_OBJECT选项现在受 JSON 规范化器支持,并将强制数组的输出为对象:

(new \CuyZ\Valinor\MapperBuilder())
    ->normalizer(Format::json())
    ->withOptions(JSON_FORCE_OBJECT)
    ->normalize(['foo', 'bar']);

// {"0":"foo","1":"bar"}

新功能

  • 在 JSON 规范化器 ( f3e8c1 ) 中添加对JSON_FORCE_OBJECT选项的支持
  • 添加对 PHP 8.4 ( 07a06a ) 的支持
  • 使用 JSON 规范化器处理JSON_PRETTY_PRINT选项 ( 950395 )

错误修复

  • 正确处理浮式铸造( 8742b2 )
  • 处理没有类作用域的 Closure 的命名空间 ( 7a0fc2 )
  • 规范化和映射到枚举时防止缓存损坏 ( e695b2 )
  • 正确处理类共享类名和命名空间组名( 6e68d6 )

其他

  • 更改隐式可为 null 的参数类型 ( 304db3 )
  • 修复属性类型注释中的拼写错误 ( b9c6ad )
  • 对缓存键使用xxh128哈希算法 ( 546c45 )