小编Pet*_*etr的帖子

Silex - 真正的DI vs注入$ app,看起来像ServiceLocator?

我昨天读了这篇文章:https://igor.io/2012/11/09/scaling-silex.html

另一个http://davedevelopment.co.uk/2012/10/03/Silex-Controllers-As-Services.html

所以一个概念性的问题在我脑海中浮现:

目前我在不同的课程中有很多控制器.我覆盖controller_resolver创建一个控制器类实例并注入$appcontoller的构造函数.

我定义这样的路线$app->get('/hello', 'HelloController::indexAction')< - 我的控制器解析器将创建new HelloController($app);- 到目前为止一切都很好.但说实话,它变成了ServiceLocator模式,而不是DependencyInjection,因为我注入了整个$app看起来像ServiceLocator用法的东西.

现在我有疑问:我应该保持原样(因为它运行良好)或尝试"控制器作为服务"只注入我的控制器真正依赖的那些服务?可能是我的SeviceLocator方法有一天会打我?(人们说DI更适合测试).

我也研究了Symfony Framework Bundle:class Controller扩展了抽象类ContainerAware,它也$container注入了整个!完全堆栈框架中的ServiceLocator方法?

任何推荐?优点缺点?

dependency-injection service-locator symfony silex

5
推荐指数
1
解决办法
1778
查看次数