2015-07-21 68 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();