• Fabien Potencier's avatar
    merged branch marijn/feature/serializer-provider (PR #401) · 97b7dc57
    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…
composer.json 1.82 KB