1

我正在使用 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 的新实例,而不是使用已经创建的实例。

4

1 回答 1

1

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

$container = $builder->buildDevContainer();

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

您应该改用:

$container = $builder->build();
于 2015-07-22T08:19:50.467 回答