跳至正文

规范化数据

规范化器是一种将给定输入转换为标量和数组值,同时保留原始结构的服务。

此功能可用于与使用数据格式(JSON、CSV、XML 等)的其他系统共享信息。规范化器将负责将数据递归地转换为可以序列化的格式。

基本用法:

namespace My\App;

$normalizer = (new \CuyZ\Valinor\NormalizerBuilder())
    ->normalizer(\CuyZ\Valinor\Normalizer\Format::array());

$userAsArray = $normalizer->normalize(
    new \My\App\User(
        name: 'John Doe',
        age: 42,
        country: new \My\App\Country(
            name: 'France',
            countryCode: 'FR',
        ),
    ),
);

// `$userAsArray` is now an array and can be manipulated much more easily, for
// instance to be serialized to the wanted data format.
//
// [
//     'name' => 'John Doe',
//     'age' => 42,
//     'country' => [
//         'name' => 'France',
//         'countryCode' => 'FR',
//     ],
// ];

规范化器接受数据格式,以便它可以直接将数据转换为所需的配置,有关更多信息,请参阅有关 JSON 规范化的章节。

支持的转换

规范化器本身为某些类型提供转换,这些类型可能不受json_encode()等序列化函数的支持:

  • 对象根据其属性转换为数组,无论其可见性(公共、受保护或私有)
  • 日期格式为 RFC 3339 格式
  • 支持的枚举使用它们的值,单元枚举使用它们的名称

可以应用自定义转换,请参阅规范化器扩展章节以获取更多信息。