13
有沒有機會讓控制器依賴於它們的服務而不是通過使用它們內部的服務容器,而是通過純粹的構造函數依賴注入?Symfony 2:控制器的依賴注入(DI)
我想編寫這樣的控制器:
<?php
class ArticleController extends \Symfony\Bundle\FrameworkBundle\Controller\Controller
{
private $articleFacade;
private $articleRepository;
public function __construct(ArticleFacade $articleFacade, ArticleRepository $articleRepository)
{
$this->articleFacade = $articleFacade;
$this->articleRepository = $articleRepository;
}
public function indexAction()
{
...
}
}
可惜的是,我可以看到Symfony的ControllerResolver確實控制器的新實例不是通過的ServiceContainer但通過簡單的return new $controller
電話。
謝謝你的回答。 – 2012-04-11 13:50:44
看看我的[AbstractControllerBundle](https://github.com/elnur/ElnurAbstractControllerBundle)。它旨在爲您提供[母服務](http://symfony.com/doc/current/cookbook/service_container/parentservices.html)以簡化將控制器用作服務。 – 2012-04-11 14:10:46
它在我看來不像FOSUser這樣做?我錯過了這一點嗎? Václav的問題是關於通過構造函數方法注入它們,而FOSUser做$ this-> container-> get('service'); https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Controller/RegistrationController.php – Steve 2012-07-02 15:14:03