[英]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.