规范化数据¶
规范化器是一种将给定输入转换为标量和数组值,同时保留原始结构的服务。
此功能可用于与使用数据格式(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 格式
- 支持的枚举使用它们的值,单元枚举使用它们的名称
可以应用自定义转换,请参阅规范化器扩展章节以获取更多信息。