用于ctor注入的PHP-DI注册实例

时间:2015-07-21 19:09:31

标签: php dependency-injection php-di

我正在使用php-di并在我的项目中使用twig。我想用php-di注册$ twig的实例,以便将它的实例注入到需要它的对象的ctor参数中。我想使用php定义并避免使用phpdoc注释,并阅读此http://php-di.org/doc/php-definitions.html

这是我的基本示例:

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

然后我在其他一些课程中将$ twig作为ctor参数。这甚至可能吗?为了清楚起见,我不想为每个使用$ twig的对象创建一个定义。

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

我得到的错误表明php-di正在尝试创建Twig_Environment的新实例,而不是使用已创建的实例。

1 个答案:

答案 0 :(得分:1)

除了您调用以创建容器的方法外,这一切都是正确的:

$container = $builder->buildDevContainer();

这会创建一个全新的容器并忽略您在上面配置的内容;)(它实际上是一个静态方法,您可以非常轻松地创建一个新容器:$container = ContainerBuilder::buildDevContainer();)。< / p>

您应该使用:

$container = $builder->build();