• 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
Name
Last commit
Last update
bin Loading commit data...
doc Loading commit data...
src/Silex Loading commit data...
tests Loading commit data...
.gitignore Loading commit data...
.travis.yml Loading commit data...
LICENSE Loading commit data...
README.md Loading commit data...
composer.json Loading commit data...
phpunit.xml.dist Loading commit data...