opensoft/opensoft-simple-serializer-bundle

用于简单序列化库的 Symfony 扩展包

2.0.1 2018-01-23 16:05 UTC

This package is not auto-updated.

Last update: 2024-09-14 13:16:04 UTC


README

简介

OpensoftSimpleSerializerBundle 是 simple-serializer 库的包装器。

Build Status Total Downloads Latest Stable Version Scrutinizer Quality Score

安装

使用 Composer(推荐)

要使用 Composer 安装 OpensoftSimpleSerializerBundle,只需将以下内容添加到您的 composer.json 文件中

// composer.json
{
    // ...
    require: {
        // ...
        "opensoft/opensoft-simple-serializer-bundle": "1.0.*"
    }
}

然后,您可以通过在 composer.json 文件所在的目录中运行 Composer 的 update 命令来安装新的依赖项

$ php composer.phar update

Composer 将自动下载所有必需的文件,并为您安装它们。接下来,您需要更新您的 AppKernel.php 文件,并注册新的扩展包

<?php
// in AppKernel::registerBundles()
$bundles = array(
    // ...
    new Opensoft\Bundle\SimpleSerializerBundle\OpensoftSimpleSerializerBundle($this),
    // ...
);

使用 deps 文件(Symfony 2.0.x)

更新您的 deps 文件

### SimpleSerializer library
[simple-serializer]
    git=git://github.com/opensoft/simple-serializer.git
### SimpleSerializer bundle
[OpensoftSimpleSerializerBundle]
    git=git://github.com/opensoft/OpensoftSimpleSerializerBundle.git
    target=bundles/Opensoft/Bundle/SimpleSerializerBundle

更新您的 AppKernel.php 文件,并注册新的扩展包

// in AppKernel::registerBundles()
$bundles = array(
    // ...
    new Opensoft\Bundle\SimpleSerializerBundle\OpensoftSimpleSerializerBundle($this),
    // ...
);

请确保您还注册了自动加载器中的命名空间

<?php
// app/autoload.php
$loader->registerNamespaces(array(
    // ...
    'Opensoft'  => __DIR__.'/../vendor/bundles',
    'Opensoft\\SimpleSerializer' => __DIR__.'/../vendor/simple-serializer/src',
    // ...
));

现在使用 vendors 脚本来将新添加的仓库克隆到您的项目中

$ php bin/vendors install

配置

OpensoftSimpleSerializerBundle 无需初始配置即可开始使用。

以下是所有配置选项及其默认值的参考

# config.yml
opensoft_simple_serializer:
    metadata:
        cache: file
        debug: "%kernel.debug%"
        file_cache:
            dir: "%kernel.cache_dir%/simple-serializer"
        # Using auto-detection, the mapping files for each bundle will be
        # expected in the Resources/config/simple-serializer directory.
        #
        # Example:
        # class: My\FooBundle\Entity\User
        # expected path: @MyFooBundle/Resources/config/simple-serializer/Entity.User.yml
        auto_detection: true
        # if you don't want to use auto-detection, you can also define the
        # namespace prefix and the corresponding directory explicitly
        directories:
            any-name:
                namespace_prefix: "My\\FooBundle"
                path: "@MyFooBundle/Resources/config/simple-serializer"
            another-name:
                namespace_prefix: "My\\BarBundle"
                path: "@MyBarBundle/Resources/config/simple-serializer"

用法

首先,您可以创建对象的映射文件。

# MyBundle\Resources\config\serializer\ClassName.yml
Fully\Qualified\ClassName:
    properties:
        some-property:
            expose: false
            type: string
            serialized_name: foo
            since_version: 1.0
            until_version: 2.0
            groups: ['get','patch']

以下是属性的所有配置选项的参考

  • expose
  • true
  • false(默认)
  • type
  • integer
  • boolean
  • double
  • string
  • array
  • T - 完整的类名
  • array
  • DateTime(默认格式为 ISO8601)
  • DateTime
  • format 可以是 DateTime 常量的名称(COOKIE,ISO8601)或字符串
  • serialized_name
  • 默认值与属性名称相同
  • since_version
  • string
  • until_version
  • string
  • groups
  • array

然后您可以使用 "simple_serializer" 服务。

<?php
//serialization
$serializer = $container->get('simple_serializer');
$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);
//deserialization
$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);