2015-07-21 66 views
1

我正在使用php-di並在我的項目中使用樹枝。我想用php-di註冊$ twig的實例,以便它的實例被注入到需要它的對象的ctor參數中。我想使用PHP的定義,避免PHPDoc的註解,並已閱讀本http://php-di.org/doc/php-definitions.htmlctor注入的PHP-DI寄存器實例

這裏是我的基本的例子:

$builder = new ContainerBuilder(); 
$builder->addDefinitions(['Twig_Environment' => $twig]); 
$container = $builder->buildDevContainer(); 

然後我就$枝杈像其他班構造函數的參數。這甚至有可能嗎?清楚的是,我不想爲每個使用$ twig的對象創建一個定義。

public function __construct(\Twig_Environment $twig) 
{ 
    $twig->render('homepage.twig'); 
} 

我收到的錯誤表明,php-di試圖創建一個Twig_Environment的新實例,而不是使用已創建的實例。

回答

1

這是正確的,除了方法調用創建容器:

$container = $builder->buildDevContainer(); 

這創造了一個全新的容器,而忽略你在上面配置;)(它實際上是一個靜態方法,你可以很容易地創建一個新的容器,如下所示:$container = ContainerBuilder::buildDevContainer();)。

您應該改用:

$container = $builder->build();