jdesrosiers / silex-jms-serializer-provider
一个将 jms/serializer 集成到 silex 中的 silex 服务提供者
v1.1.0
2016-07-20 00:08 UTC
Requires
- jms/serializer: ~1.0
- silex/silex: ~2.0
Requires (Dev)
- phpunit/phpunit: 3.7.*
README
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, ));