您可以使用以下方式访问控制器内的(比方说)Doctrine服务:
$d = $this->getDoctrine()
现在我希望我的控制器调用另一个函数(在另一个类中),我希望该类可以访问所有服务。如果不将服务作为变量传递,是否可能?
答案 0 :(得分:4)
您必须为您的类或方法注入依赖服务。如果您正在考虑一些全局对象,您可能无处可访问,而不是正确的方法(并且您无法以这种方式实际访问容器)。你会错过依赖注入的全部内容。
您可以通过两种方式向您的班级注入服务:
第一个解决方案要求您自己传递依赖关系(构造函数,设置器,方法)。
后面的解决方案意味着您将类定义为服务,并让容器构造它并注入依赖项。只有在可以将对象创建委托给DIC时才能执行此操作。例如,无法使用实体进行此操作。
小心注射整个容器。这不是最好的做法。您将根据配置引入可能具有不同服务的整个容器的依赖性。依赖性不明确。