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