【发布时间】:2016-03-19 10:19:41
【问题描述】:
今天我更新了我的项目,我收到了这个警告:
已弃用:ServiceManagerAwareInterface 已弃用并将被 与 ServiceManagerAwareInitializer 一起在 3.0 版中删除。 请更新您的 X 类以删除实现,然后开始 而是通过工厂注入你的依赖项
我有一些实现ServiceManagerAwareInterface 的主要Base 类和扩展这些基类的多个类。
那么为这些类中的每一个创建额外的工厂类是一个好习惯吗?还是为每个模块使用 1 AbstractFactory 并在其中启动类更好?
使用 AbstractFactory 影响性能的剂量?
在许多类中注入单个(或两个)共享依赖项的最佳实践是什么?
更新: 即使我接受了@AlexP 的回答,但我对提供依赖项抛出构造函数有些担心。想象一下这个场景:我有一个控制器,有几个动作,免得说ActionA需要ServiceZ,ActionB需要ServiceY和ServiceX,而ServiceX也依赖于ServiceM和ServiceN。现在每次我调用 ActionA 时,我的控制器都会启动所有这些服务,但 ActionA 只需要 1 个服务,而我的控制器加载了 5 个服务......这是一个好习惯吗?这是正确的方法吗?这不会有很差的性能吗,因为在每次请求时都会启动我们在该请求期间根本不会使用的服务?
现在我允许每个服务/控制器处理自己的需求并在当需要它们时加载服务。
这样我就不必启动多个我不会使用的服务,也不需要知道服务依赖项来使用它们。我知道这不被接受为最佳实践,但代码很干净,我更愿意牺牲“最佳实践”以获得更好的性能。
感谢任何人对此的意见。
【问题讨论】:
标签: php dependency-injection zend-framework2 zend-framework3