macedigital / silex-jms-serializer
Use JMS Serializer for (de-)serializing object graphs in silex applications
Installs: 16 489
Dependents: 1
Suggesters: 0
Security: 0
Stars: 4
Watchers: 1
Forks: 0
Open Issues: 0
Requires
- php: >=5.3.10
- jms/serializer: >=0.12,<=0.13.x-dev
- silex/silex: 1.*
Requires (Dev)
- phpunit/phpunit: 3.7.*
Suggests
- symfony/yaml: Required if you'd like to deserialize data from YAML format.
This package is not auto-updated.
Last update: 2024-12-21 15:13:49 UTC
README
This Silex service provider registers JMS-Serializer for (de-)serialization of object graphs of any complexity.
Installation
The preferred way of installing this service provider is through composer:
composer.phar require macedigital/jms-serializer-provider
Example
As this is a drop-in replacement for the Silex SerializerServiceProvider this slightly adapted example from the docs will work:
<?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();