-
Fabien Potencier authored
This PR was merged into the master branch. Commits ------- 03bccc83 Add a `SerializerServiceProvider`. Discussion ---------- Add a SerializerServiceProvider Usage ----- ```php <?php 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']->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+"); ``` --------------------------------------------------------------------------- by GromNaN at 2012-06-28T14:29:50Z You can create this ServiceProvider in its own repository and put a link on the wiki : https://github.com/fabpot/Silex/wiki/Third-Party-ServiceProviders --------------------------------------------------------------------------- by fabpot at 2012-06-28T14:38:42Z I think it makes sense to have this in core. --------------------------------------------------------------------------- by marijn at 2012-06-28T14:41:03Z Ok. Haven't tested in "in the wild" yet (working on that as we speak). Any pointers, concerns or other comments are more than welcome
😄 Should I add more documentation or is this enough? --------------------------------------------------------------------------- by igorw at 2012-06-28T14:47:03Z @fabpot I agree.👍 Please add some more tests. --------------------------------------------------------------------------- by marijn at 2012-06-28T14:50:13Z @igorw in regards to the tests: what would you like to see added? I figured we should only test if the serializer is configured properly, not if it actually serializes. --------------------------------------------------------------------------- by igorw at 2012-06-28T15:11:06Z You're right, no need to test serialization. Looks good.👍 --------------------------------------------------------------------------- by marijn at 2012-06-28T16:02:20Z Somehow I have trouble running the full test suite. The swift mailer configuration doesn't seem to work. Is this a known issue? --------------------------------------------------------------------------- by GromNaN at 2012-06-28T20:33:14Z A new trait can also be added with the method `serialize()`. --------------------------------------------------------------------------- by marijn at 2012-06-28T21:34:58Z At the moment I haven't got a working version of PHP 5.4 so I cannot test traits. --------------------------------------------------------------------------- by marijn at 2012-06-29T19:01:21Z It seems to me that adding a `trait` for the serializer doesn't really make any sense: the API for the `Serializer` component is pretty extensive, it would add a lot of methods to the `Application`. What do you think? --------------------------------------------------------------------------- by stof at 2012-06-30T10:32:07Z @marijn the trait would cover the simple use of the serializer, i.e. a ``serialize()`` method. It is not intended to cover all possible use cases. --------------------------------------------------------------------------- by fabpot at 2012-06-30T18:31:32Z Can you squash your commits before I merge? Thanks. --------------------------------------------------------------------------- by marijn at 2012-07-10T10:58:58Z @fabpot this has been squashed. I think it's mergeable😄 --------------------------------------------------------------------------- by marijn at 2012-08-17T13:39:17Z Have I missed something here? To the best of my knowledge, this is mergeable. Please let me know if there is anything I still need to do😄 --------------------------------------------------------------------------- by alanbem at 2012-10-27T20:39:02Z What is status of this PR? Is it going to be merged? --------------------------------------------------------------------------- by marijn at 2012-10-27T21:14:12Z I have no clue, @alanbem. If you're in need of a serializer for Silex you can either merge this in your own fork of Silex or use the [`jms/serializer-service-provider`][1] that I released. [1]: https://github.com/pink-tie/JMSSerializerServiceProvider --------------------------------------------------------------------------- by igorw at 2012-10-27T23:15:53Z @fabpot this looks good to me.97b7dc57
Analyzing file…