The SerializerServiceProvider provides a service for serializing objects.
None.
1 | $app->register(new Silex\Provider\SerializerServiceProvider());
|
Note
The SerializerServiceProvider relies on Symfony's Serializer Component, which comes with the "fat" Silex archive but not with the regular one. If you are using Composer, add it as a dependency:
1 | composer require symfony/serializer
|
The SerializerServiceProvider
provider provides a serializer
service:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | use Silex\Application;
use Silex\Provider\SerializerServiceProvider;
use Symfony\Component\HttpFoundation\Response;
$app = new Application();
$app->register(new SerializerServiceProvider());
// 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. The
// object returned has getters and setters exposing the state.
$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")
->assert("id", "\d+");
|