用于ctor注入的PHP-DI寄存器实例

用于ctor注入的PHP-DI寄存器实例,php,dependency-injection,php-di,Php,Dependency Injection,Php Di,我在项目中使用PHPDI和twig。我想用PHPDI注册$twig的实例,以便将其实例注入到需要它的对象上的ctor参数中。我想使用php定义并避免使用phpdoc注释,并且已经阅读了本文 以下是我的基本示例: $builder = new ContainerBuilder(); $builder->addDefinitions(['Twig_Environment' => $twig]); $container = $builder->buildDevContainer();

我在项目中使用PHPDI和twig。我想用PHPDI注册$twig的实例,以便将其实例注入到需要它的对象上的ctor参数中。我想使用php定义并避免使用phpdoc注释,并且已经阅读了本文

以下是我的基本示例:

$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_环境的新实例,而不是使用已创建的实例。

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

$container = $builder->buildDevContainer();
这将创建一个全新的容器并忽略上面配置的内容;)(实际上,它是一种静态方法,您可以使用它非常轻松地创建一个新容器,如下所示:
$container=ContainerBuilder::buildDevContainer();

您应改为使用:

$container = $builder->build();