jms / serializer-service-provider
Silex 序列化组件服务提供者
Requires
- php: >=5.3.3
- jms/serializer-bundle: 0.9.*
- silex/silex: dev-master
- symfony/routing: 2.1.*
Requires (Dev)
- doctrine/common: >=2.1,<2.4-dev
This package is not auto-updated.
Last update: 2024-09-14 13:04:53 UTC
README
SerializerServiceProvider
为对象序列化提供服务。此服务提供者使用 JMS\SerializerBundle
进行序列化。
参数
-
serializer.src_directory
: 存放JMS\SerializerBundle
源代码的目录。 -
serializer.cache.directory
: 存储元数据缓存的目录。 -
serializer.naming_strategy.seperator
(可选): 正规化属性时使用的分隔符字符串。 -
serializer.naming_strategy.lower_case
(可选): 布尔标志,表示属性是否应该正规化为小写字符串。 -
serializer.date_time_handler.format
(可选): 序列化和反序列化DateTime
对象时使用的格式。请参阅 PHP 文档中支持的日期/时间格式。 -
serializer.date_time_handler.default_timezone
(可选): 序列化和反序列化DateTime
对象时使用的时区。请参阅 PHP 文档中支持的时区列表。 -
serializer.disable_external_entities
(可选): 布尔标志,表示序列化器是否应禁用 XML 序列化格式的外部实体。
服务
serializer
:JMS\SerializerBundle\Serializer\Serializer
实例。
注册
<?php $app = new Silex\Application(); $app->register(new JMS\SerializerServiceProvider\SerializerServiceProvider(), array( 'serializer.src_directory' => 'path/to/vendor/jms/serializer-bundle/src', 'serializer.cache.directory' => 'path/to/cache' ));
使用
标注您希望序列化的类,请参阅 注释文档
<?php use JMS\SerializerBundle\Annotation; // The serializer bundle doesn't need getters or setters class Page { /** * @Type("integer") */ private $id; /** * @Type("string") */ private $title; /** * @Type("string") */ private $body; /** * @Type("DateTime") */ private $created; /** * @Type("Author") */ private $author; /** * @Type("boolean") */ private $featured; }
<?php use JMS\SerializerBundle\Annotation; // The serializer bundle doesn't need getters or setters class Author { /** * @Type("string") */ private $name; }
SerializerServiceProvider
提供者提供了一个 serializer
服务。在您的应用程序中使用它来序列化和反序列化您的对象
<?php use Silex\Application; use JMS\SerializerServiceProvider\SerializerServiceProvider; use Symfony\Component\HttpFoundation\Response; $app = new Application(); // Make sure that the PHP script can write in the cache directory and that // the directory exists. $app->register(new SerializerServiceProvider(), array( 'serializer.src_directory' => __DIR__."/../vendor/jms/serializer-bundle/src", 'serializer.cache.directory' => __DIR__."/../cache/serializer" )); // only accept content types supported by the serializer via the assert method. $app->get("/pages/{id}.{_format}", function ($id) use ($app) { // assume a page_repository service exists that returns Page objects. $page = $app['page_repository']->find($id); $format = $app['request']->getFormat(); if (!$page instanceof Page) { $this->abort("No page found for id: $id"); } return new Response($app['serializer']->serialize($page, $format), 200, array( "Content-Type" => $app['request']->getMimeType($format) )); })->assert("_format", "xml|json") ->assert("id", "\d+");
许可
此服务提供者可在 MIT 许可证
下使用。请注意,所需的 JMSSerializerBundle
在 Apache 2 许可证
下提供。
鸣谢
感谢 Johannes Schmitt (@schmittjoh) 为制作 JMSSerializerBundle
。