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.
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();
});
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With