我昨天读了这篇文章:https://igor.io/2012/11/09/scaling-silex.html
另一个http://davedevelopment.co.uk/2012/10/03/Silex-Controllers-As-Services.html
所以一个概念性的问题在我脑海中浮现:
目前我在不同的课程中有很多控制器.我覆盖controller_resolver
创建一个控制器类实例并注入$app
contoller的构造函数.
我定义这样的路线$app->get('/hello', 'HelloController::indexAction')
< - 我的控制器解析器将创建new HelloController($app);
- 到目前为止一切都很好.但说实话,它变成了ServiceLocator模式,而不是DependencyInjection,因为我注入了整个$app
看起来像ServiceLocator用法的东西.
现在我有疑问:我应该保持原样(因为它运行良好)或尝试"控制器作为服务"只注入我的控制器真正依赖的那些服务?可能是我的SeviceLocator方法有一天会打我?(人们说DI更适合测试).
我也研究了Symfony Framework Bundle:class Controller
扩展了抽象类ContainerAware
,它也$container
注入了整个!完全堆栈框架中的ServiceLocator方法?
任何推荐?优点缺点?