thunderer/serializard
最新稳定版本:v0.4.0
Composer 安装命令:
composer require thunderer/serializard
包简介
Flexible serializer
README 文档
README
Serializard is a library for (un)serialization of data of any complexity. Its main focus is to give user as much flexibility as possible by delegating the (un)serialization logic to the programmer to encourage good object design and only supervising the process hiding the unpleasant details about it.
Installation
This library is available on Composer/Packagist as thunderer/serializard.
Usage
Let's consider a simple User class with two properties and some setup code:
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);
Serialization
Serialization is controlled by registering handlers used in normalization phase:
$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"}
Unserialization
Unserialization can be controlled by registering callables able to reconstruct objects from data parsed from input text:
$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');
Formats
- JSON in
JsonFormatconverts objects to JSON, - Array in
ArrayFormatjust returns object graph normalized to arrays of scalars, - YAML in
YamlFormatconverts objects to YAML (usessymfony/yaml), - XML in
XmlFormatconverts objects to XML (usesext-dom).
License
See LICENSE file in the main directory of this library.
统计信息
- 总下载量: 66.62k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 27
- 点击次数: 1
- 依赖项目数: 1
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2015-12-08