Pimple DI 共享已弃用。怎么办?
Pimple DI share deprecated. Now what?
在 Pimple 1.0 中,我曾经能够像这样分享 class 个实例:
$app['some_service'] = $app->share(function () {
return new Service();
});
这现在似乎已被弃用,我无法找到执行此操作的新方法。
似乎默认情况下,pimple 3.0(Silex 2.0 使用)总是 returns 相同的服务实例。如果你不想要这种行为,你需要明确说明并使用工厂函数。
在 Pimple 1.0 (Silex 1) 中,您这样做:
$app['shared_service'] = $app->share(function () {
return new Service();
});
$app['non_shared_service'] = function () {
return new Service();
};
在 Pimple 3.0 (Silex 2) 中你这样做(相反!):
$app['shared_service'] = function () {
return new Service();
};
$app['non_shared_service'] = $app->factory(function () {
return new Service();
});
取决于 Pimple 版本!
粉刺 1.0
$container['shared'] = $container->shared(function(){
return new Class();
});
$container['non_shared'] = function() {
return new Class();
};
粉刺 3.0
$container['shared'] = function() {
return new Class();
};
$container['non_shared'] = $container->factory(function() {
return new Class();
});
请记住,当您创建共享服务时,它们 return 不会改变。当您创建非共享服务时,每次您使用时,Pimple 都会为您提供一个新的 it 服务实例。
在 Pimple 1.0 中,我曾经能够像这样分享 class 个实例:
$app['some_service'] = $app->share(function () {
return new Service();
});
这现在似乎已被弃用,我无法找到执行此操作的新方法。
似乎默认情况下,pimple 3.0(Silex 2.0 使用)总是 returns 相同的服务实例。如果你不想要这种行为,你需要明确说明并使用工厂函数。
在 Pimple 1.0 (Silex 1) 中,您这样做:
$app['shared_service'] = $app->share(function () {
return new Service();
});
$app['non_shared_service'] = function () {
return new Service();
};
在 Pimple 3.0 (Silex 2) 中你这样做(相反!):
$app['shared_service'] = function () {
return new Service();
};
$app['non_shared_service'] = $app->factory(function () {
return new Service();
});
取决于 Pimple 版本!
粉刺 1.0
$container['shared'] = $container->shared(function(){
return new Class();
});
$container['non_shared'] = function() {
return new Class();
};
粉刺 3.0
$container['shared'] = function() {
return new Class();
};
$container['non_shared'] = $container->factory(function() {
return new Class();
});
请记住,当您创建共享服务时,它们 return 不会改变。当您创建非共享服务时,每次您使用时,Pimple 都会为您提供一个新的 it 服务实例。