thunderer / serializard
灵活的序列化器
v0.4.0
2021-01-15 17:48 UTC
Requires
- php: ^5.5|^7.0|^8.0
- symfony/yaml: >=2.3
Requires (Dev)
- phpunit/phpunit: >=4.1
Suggests
- ext-dom: required for XML format
- symfony/yaml: required for YAML format
This package is auto-updated.
Last update: 2024-09-16 01:30:36 UTC
README
Serializard是一个用于任何复杂度数据(反)序列化的库。它的主要目标是尽可能地为用户提供灵活性,通过将(反)序列化逻辑委托给程序员,以鼓励良好的对象设计,并仅监督过程,隐藏有关其的不愉快细节。
安装
此库在Composer/Packagist中可用,名称为thunderer/serializard
。
使用方法
让我们考虑一个具有两个属性和一些设置代码的简单User类
final class User { private $id; private $name; public function __construct(int $id, string $name) { /* ... */ } public function getId() { return $this->id; } public function getName() { return $this->name; } } $user = new User(1, 'Thomas'); $formats = new FormatContainer(); $formats->add('json', new JsonFormat()); $hydrators = new FallbackHydratorContainer(); $normalizers = new FallbackNormalizerContainer(); $serializard = new Serializard($formats, $normalizers, $hydrators);
序列化
序列化由注册在标准化阶段使用的处理程序控制
$normalizers->add(User::class, function(User $user) { return [ 'id' => $user->getId(), 'name' => $user->getName(), ]; }); $result = $serializard->serialize($user, 'json'); // result is {"id":1,"name":"Thomas"}
反序列化
反序列化可以通过注册从输入文本解析的数据重建对象的调用者来控制
$hydrators->add(User::class, function(array $data) { return new User($data['id'], $data['name']); }); $json = '{"id":1,"name":"Thomas"}'; $user = $serializard->unserialize($json, User::class, 'json');
格式
- JSON在
JsonFormat
中将对象转换为JSON - 数组在
ArrayFormat
中仅返回规范化到标量数组的对象图 - YAML在
YamlFormat
中将对象转换为YAML(使用symfony/yaml
) - XML在
XmlFormat
中将对象转换为XML(使用ext-dom
)
许可证
请参阅此库主目录中的LICENSE文件。