opensoft/simple-serializer

Simple Serializer

1.1.1 2015-09-10 10:02 UTC

This package is not auto-updated.

Last update: 2024-09-23 11:13:34 UTC


README

Build Status Total Downloads Latest Stable Version Scrutinizer Quality Score SensioLabsInsight

介绍

Simple-Serializer 允许您将对象序列化为所需的输出格式,例如 JSON。该库编写为与 REST 服务中的 DTO 对象一起使用。

内置功能包括

  • (反)序列化对象图
  • 支持布尔值、整数、双精度、DateTime<格式>、数组、T、数组、null 类型,其中 "T" - 是某个 PHP 对象。
  • 可通过 YAML 配置
  • 三种反序列化模式(非严格模式、中等严格模式、严格模式)

反序列化模式:非严格模式 - 序列化器不检查传入参数;中等严格模式 - 序列化器额外检查传入参数,如果存在则抛出 InvalidArgumentException;严格模式 - 序列化器额外检查传入参数,如果存在额外参数或缺少某些参数,则抛出异常。

一些限制

  • 对象必须为序列化/反序列化配置

可能的 TODO 列表

  • (反)序列化任何复杂度的对象图,包括循环引用
  • 可通过 PHP、XML 或注解配置
  • 可自定义与 Doctrine ORM 等集成

需要注意的是,Simple-Serializer 是一个真正的简单库,配置最少,但为创建 REST API 提供了广泛的机会。

Build Status

安装

要使用 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);