繁体   English   中英

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

[英]PHP-DI Register Instance for ctor Injection

我正在使用php-di,并在我的项目中使用了树枝。 我想用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的新实例,而不是使用已创建的实例。

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

$container = $builder->buildDevContainer();

这将创建一个全新的容器,并忽略您在上面配置的内容;)(实际上,这是一个静态方法,可以很容易地使用它来创建新容器,如下所示: $container = ContainerBuilder::buildDevContainer(); )。

您应该改用:

$container = $builder->build();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM