opensoft / simple-serializer
Simple Serializer
1.1.1
2015-09-10 10:02 UTC
Requires
- php: >=5.3.3
- symfony/yaml: >=2.0.0
Requires (Dev)
- phpunit/phpunit: 4.0.*@stable
This package is not auto-updated.
Last update: 2024-09-23 11:13:34 UTC
README
介绍
Simple-Serializer 允许您将对象序列化为所需的输出格式,例如 JSON。该库编写为与 REST 服务中的 DTO 对象一起使用。
内置功能包括
- (反)序列化对象图
- 支持布尔值、整数、双精度、DateTime<格式>、数组、T、数组
、null 类型,其中 "T" - 是某个 PHP 对象。 - 可通过 YAML 配置
- 三种反序列化模式(非严格模式、中等严格模式、严格模式)
反序列化模式:非严格模式 - 序列化器不检查传入参数;中等严格模式 - 序列化器额外检查传入参数,如果存在则抛出 InvalidArgumentException;严格模式 - 序列化器额外检查传入参数,如果存在额外参数或缺少某些参数,则抛出异常。
一些限制
- 对象必须为序列化/反序列化配置
可能的 TODO 列表
- (反)序列化任何复杂度的对象图,包括循环引用
- 可通过 PHP、XML 或注解配置
- 可自定义与 Doctrine ORM 等集成
需要注意的是,Simple-Serializer 是一个真正的简单库,配置最少,但为创建 REST API 提供了广泛的机会。
安装
要使用 Composer 安装 Simple-Serializer,只需将以下内容添加到您的 composer.json
文件中
// composer.json { // ... require: { // ... "opensoft/simple-serializer": "dev-master" } }
然后,您可以通过从您的 composer.json
文件所在的目录运行 Composer 的 update
命令来安装新依赖项
$ php composer.phar update
配置
MyBundle\Resources\config\serializer\ClassName.yml Fully\Qualified\ClassName: properties: some-property: expose: true type: string serialized_name: foo since_version: 1.0 until_version: 2.0 groups: ['get','patch']
- 暴露
- true
- false(默认值)
- 类型
- 整数
- 布尔值
- 双精度
- 字符串
- 数组
- T - 完整限定类名
- 数组
- DateTime
- DateTime<格式>
- 格式可以是 DateTime 常量的名称(COOKIE、ISO8601)、字符串或空(默认格式是 ISO8601)
- 序列化名称
- 默认值等于名称属性
- 自版本
- 字符串
- 至版本
- 字符串
- 分组
- 数组
- null_skipped
- true
- false(默认值)
序列化对象
最常用的用法可能是序列化对象。这可以非常容易地实现
<?php //get Serializer $serializer = $this->getSerializer(); $string = $serializer->serialize($object); //Serialize array of the objects $string = $serializer->serialize(array($object)); //Serialize specific groups $serializer->setGroups(array('get')); $string = $serializer->serialize($object); //Serialize specific version $serializer->setVersion('1.0'); $string = $serializer->serialize($object);
反序列化对象
您还可以从 JSON 表示形式反序列化对象。例如,在通过 API 接收数据时。
<?php //get Fully\Qualified\ClassName $object = $this->getClassName(); //get Serializer $serializer = $this->getSerializer(); $object = $serializer->unserialize($jsonData, $object); //Unserialize array of the objects $objects = $serializer->unserialize($jsonData, array($object)); //Unserialize specific groups $serializer->setGroups(array('get')); $object = $serializer->unserialize($jsonData, $object); //Unserialize specific version $serializer->setVersion('1.0'); $object = $serializer->unserialize($jsonData, $object); //Strict unserialize mode $serializer->setStrictUnserializeMode(2); $object = $serializer->unserialize($jsonData, $object); //Medium Strict unserialize mode $serializer->setStrictUnserializeMode(1); $object = $serializer->unserialize($jsonData, $object); //Non-Strict unserialize mode $serializer->setStrictUnserializeMode(0); $object = $serializer->unserialize($jsonData, $object);