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.
On
Seems that by pimple 3.0 (which Silex 2.0 uses) by default always returns the same instance of the service. You need to be explicit about it and use the factory function if you don't want this behaviour.
On
Depends of the Pimple version!
On Pimple 1.0
$container['shared'] = $container->shared(function(){
return new Class();
});
$container['non_shared'] = function() {
return new Class();
};
On Pimple 3.0
$container['shared'] = function() {
return new Class();
};
$container['non_shared'] = $container->factory(function() {
return new Class();
});
Remembering, when you create a shared service, what they return will not change. When you create a non shared service, every time you use, the Pimple will provide to you a new instance of it service.
In Pimple 1.0 (Silex 1), you do this:
In Pimple 3.0 (Silex 2) you do this (which is the opposite!):