macedigital / silex-jms-serializer

使用JMS Serializer在silex应用程序中(反)序列化对象图

v1.0.0 2013-08-30 14:42 UTC

This package is not auto-updated.

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


README

此Silex服务提供程序注册了JMS-Serializer,用于任何复杂度的对象图的(反)序列化。

安装

安装此服务提供程序的首选方式是通过composer

composer.phar require macedigital/jms-serializer-provider

示例

由于这是Silex SerializerServiceProvider的替代品,因此以下来自文档的略微修改的示例将有效:

<?php
$loader = require_once __DIR__.'/../vendor/autoload.php';

// If you're are using class annotations
Doctrine\Common\Annotations\AnnotationRegistry::registerLoader(array($loader, 'loadClass'));

$app = new Silex\Application();

// optional: whether to stat cached files or not, defaults to $app['debug']
$app['serializer.debug'] = true;

// optional: defaults to system's default temporary folder 
$app['serializer.cache_dir'] = '/some/writable/folder';

$app->register(new Macedigital\Silex\Provider\SerializerProvider);

// 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 a Page object
    $page = $app['page_repository']->find($id);
    $format = $app['request']->getRequestFormat();

    if (!$page instanceof Page) {
        $app->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|yml")
  ->assert("id", "\d+");

$app->run();