加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 避免注入服务容器而不是单独服务的技术原因是什么?

发布时间:2020-12-13 16:31:38 所属栏目:PHP教程 来源:网络整理
导读:通常当我需要将一个或多个服务注入另一个服务时,我明确地注入每个服务.然而,我有一种情况,注入服务容器本身将使事情变得更容易.我知道这不是一个推荐的做法,但我很好奇技术原因是为了阻止这一点.这是合法的,因为它太资源密集,还是更个人的感觉,它太凌乱了?
通常当我需要将一个或多个服务注入另一个服务时,我明确地注入每个服务.然而,我有一种情况,注入服务容器本身将使事情变得更容易.我知道这不是一个推荐的做法,但我很好奇技术原因是为了阻止这一点.这是合法的,因为它太资源密集,还是更个人的感觉,它太凌乱了?
如果您注入容器,则不会使依赖关系清楚.事实上,你比以前更模糊他们.如果你有这样的课程…
class DocumentCreator(IFileNamer fileNamer,IRepository repository)
{ ... }

…你可以看到依赖关系.您还可以轻松地将这些依赖关系模拟为单元测试,以确保您隔离DocumentCreator,并且可以知道任何测试失败都是其代码而不是其依赖关系中的代码的结果.

另一方面,如果你这样做

class DocumentCreator(IDependencyContainer container)
{ ... }

…你掩盖了依赖关系.你不知道,没有检查课程的内部,它需要一个IFileNamer和一个IR存储库.

为了测试DocumentCreator,您也不会轻易知道您需要放入容器中的嘲弄.模拟IDependencyContainer根本不会帮助你;您的类仍然会在测试中失败,因为容器不会包含IFileNamer和IRepository,除非您检查类的内部结构以确定它们是必需的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读