簡體   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