Search code examples
phpsymfonysilexpimple

Pimple DI share deprecated. Now what?


In Pimple 1.0 I used to be able to share class instances like this:

$app['some_service'] = $app->share(function () {
    return new Service();
});

This now seems to be deprecated and I am unable to find what is the new way of doing this.


Solution

  • In Pimple 1.0 (Silex 1), you do this:

    $app['shared_service'] = $app->share(function () {
        return new Service();
    });
    
    $app['non_shared_service'] = function () {
        return new Service();
    };
    

    In Pimple 3.0 (Silex 2) you do this (which is the opposite!):

    $app['shared_service'] = function () {
        return new Service();
    };
    
    $app['non_shared_service'] = $app->factory(function () {
        return new Service();
    });