所以在Silex中,我试图从控制器操作中获取$ app参数,并传递与控制器/操作相关的依赖项。
通常我的控制器都有这些共享依赖项:
默认情况下,我有一个基本的Controller类来接受构造函数。从它继承的控制器也最终也会获取这些参数。此外,它们还采用其他参数,例如对象存储库/存储(例如身份验证或用户控制器中的用户存储库)。
我最终在Silex中使用至少 5参数向构造函数注册控制器,因为我似乎在其他应用程序中没有看到很多这样的参数。感觉就像我做错了。
我也意识到我正在抱怨Pimple DI容器“修复”同样的事情,但使用它似乎也不太符合DI哲学。
我的问题:有没有更好的方法来做我正在做的事情?
答案 0 :(得分:1)
是的,有其他解决方案。
ControllerUtil
或类似的东西。但这并不总是容易或可能的,所以我并不是特别喜欢它。Benjamin Eberlei在这篇博文中解释了这种方法:Extending Symfony2: Controller Utilities
鉴于控制器通常不是您想要重新注入,重用或单元测试的组件,因此这是一个可接受的妥协IMO。我已经使用这种方法大约一年了,我无法回去。
以下是我就该主题撰写的相关博文:Controllers as services?