首页 文章

Symfony如何在扩展Controller的每个类中注入其DI容器?

提问于
浏览
1

对于某些人来说,这似乎是愚蠢的,无论如何,我是Symfony世界的新手并阅读文档,我提出了一个疑问:

Symfony如何在每个Controller类中注入DI Container实例,它扩展Controller,以便您可以使用get($ id)方法轻松地从容器访问服务?像这儿:

use Acme\HelloBundle\Newsletter\NewsletterManager;

// ...

public function sendNewsletterAction()
{
    $mailer = $this->get('my_mailer');
    $newsletter = new NewsletterManager($mailer);
    // ...
}

我从GitHub看到了Controller类的源代码,Symfony中的 Controller 类扩展了实现 ContainerAwareInterface 接口的 abstract class ContainerAware ,它有一个方法setContainer(ContainerInterface $ container = null);

我可以假设Controller本身试图设置一个对Container实例的引用,调用从ContainerAware抽象类继承的setContainer,但我不确定我是否正确,但是因为我知道在Symfony2中每个服务(具体的对象)功能)是在DI容器的监督下,DI容器负责将容器注入Controller setContainer()setter?容器本身?但是怎么样?

感谢您的关注!

1 回答

相关问题