0

我在看这个:https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-11-container-meta.md#4-recommended-usage-container-psr-and-the-service-locator你能解释为什么注入一个容器是好的和坏的,以及为什么从容器中取出的对象不是它们宿主类的依赖关系?

Q1:

在 “BadExample” 这表明ContainerInterface被注入__constructor,它是 “坏”。但后来,ContainerInterface被注入RouterExample,并且突然“OK”。后来,ExampleFactory也发生了同样的情况,大概也可以。

你能解释做同样的事情如何既好又坏?

Q2:

有评论说:“这是可行的,路由器是找到匹配的控制器项,控制器不是路由器的依赖”。我不明白为什么它是OK”。

回答

0

文章在应用程序的框架使用DI容器域名解析服务是ExampleFactory的焦点。

例如在Web应用程序中,传入的HTTP请求被传递给试图实例化控制器的工厂,该控制器工厂是拥有DI容器的好地方(事实上,许多DI容器默认会覆盖这个工厂),文章甚至指出:

其唯一目的是创建和返回新实例的工厂对象可以使用服务定位符模式

我们的Web应用程序中的控制器工厂不依赖于它试图创建的控制器,它只关心找到一个控制器,以便处理HTTP请求。

相反,域对象不应该关注解决依赖关系,因为文中提到的所有原因(以及更多)。

相关问题