opensoft / opensoft-simple-serializer-bundle
用于简单序列化库的 Symfony 扩展包
2.0.1
2018-01-23 16:05 UTC
Requires
- php: ^5.5.9|>=7.0.8
- opensoft/simple-serializer: >=1.0.0
- symfony/framework-bundle: ^3.3
This package is not auto-updated.
Last update: 2024-09-14 13:16:04 UTC
README
简介
OpensoftSimpleSerializerBundle 是 simple-serializer 库的包装器。
安装
使用 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);