jdesrosiers/silex-jms-serializer-provider

一个将 jms/serializer 集成到 silex 中的 silex 服务提供者

v1.1.0 2016-07-20 00:08 UTC

This package is auto-updated.

Last update: 2024-08-26 03:20:16 UTC


README

Build Status Scrutinizer Code Quality Code Coverage

silex-jms-serializer-provider 是一个将 JmsSerializer 集成到 silex 中的 silex 服务提供者。

安装

使用 composer 安装 silex-jms-serializer-provider。此项目使用 语义化版本控制

{
    "require": {
        "jdesrosiers/silex-jms-serializer-provider": "~1.0"
    }
}

参数

  • serializer.srcDir: (字符串) jms/serializer 组件的路径。
  • serializer.annotationReader: (AnnotationReader) 设置自定义的 AnnotationReader。
  • serializer.cacheDir: (字符串) 设置缓存注释的目录。
  • serializer.configureHandlers: (闭包) 覆盖默认的处理程序。
  • serializer.configureListeners: (闭包) 覆盖默认的监听器。
  • serializer.objectConstructor: (ObjectConstructorInterface) 设置自定义的对象构造器。
  • serializer.namingStrategy: (字符串) 设置属性命名策略
  • serializer.namingStrategy.separator: (字符串) 如果选择 CamelCase 作为命名策略,您可以覆盖默认的分隔符。
  • serializer.namingStrategy.lowerCase: (布尔值) 如果选择 CamelCase 作为命名策略,您可以覆盖小写选项。
  • serializer.serializationVisitors: (数组<字符串:VisitorInterface>) 覆盖默认的序列化访问者。
  • serializer.deserializationVisitors: (数组<字符串:VisitorInterface>) 覆盖默认的反序列化访问者。
  • serializer.includeInterfaceMetadata: (布尔值) 是否包含接口的元数据
  • serializer.metadataDirs: (数组字符串:字符串) 设置命名空间前缀到目录的映射。

服务

  • serializer: 使用所有给定参数构造的 Serializer 对象。
  • serializer.builder: 如果所有提供的快捷方式都不够用,您始终可以获取 SerializerBuilder 对象,并在构造 Serializer 对象之前添加额外的自定义设置。
  • serializer.propertyNamingStrategy: 由提供者生成的 PropertyNamingStrategy 对象。除非您正在使用构建器进行一些复杂操作,否则通常不需要使用它。

注册

$app->register(new JDesrosiers\Silex\Provider\JmsSerializerServiceProvider(), array(
    "serializer.srcDir" => __DIR__ . "/vendor/jms/serializer/src",
));

用法

Serializer 文档可以在 http://jmsyst.com/libs/serializer 找到。

$app->get("/foo", function () use ($app) {
    $foo = new Foo();
    return $app["serializer"]->serialize($foo, "json");
});

使用构建器

您可以直接使用构建器添加额外的自定义设置

$app->register(new JDesrosiers\Silex\Provider\JmsSerializerServiceProvider(), array(
    "serializer.srcDir" => __DIR__ . "/vendor/jms/serializer/src",
//    "serializer.namingStrategy" => "IdenticalProperty",
));
$app["serializer.builder"]->setPropertyNamingStrategy(new IdenticalPropertyNamingStrategy());

添加自定义处理程序

$closure = Pimple::protect(
    function(JMS\Serializer\Handler\HandlerRegistry $registry) {
        $registry->registerHandler('serialization', 'MyObject', 'json',
            function($visitor, MyObject $obj, array $type) {
                return $obj->getName();
            }
        );
    }
);
$app->register(new JDesrosiers\Silex\Provider\JmsSerializerServiceProvider(), array(
    "serializer.srcDir" => __DIR__ . "/vendor/jms/serializer/src",
    "serializer.configureHandlers" => $closure,
));