我使用php-di,我在我的项目中使用twig。我想用php-di注册$twig的实例,以便将其实例注入到需要的对象上的tor参数中。我想使用php定义和避免phpdoc注释,并已阅读此http://php-di.org/doc/php-definitions.html
下面是我的基本例子:
$builder = new ContainerBuilder();
$builder->addDefinitions(['Twig_Environment' => $twig]);
$container = $builder->buildDevContainer();
然后我有$twig作为一些其他类的参数。这可能吗?为了清楚起见,我不想为每个使用$twig的对象创建一个定义。
public function __construct('Twig_Environment $twig)
{
$twig->render('homepage.twig');
}
我得到的错误表明php-di正在尝试创建一个新的Twig_Environment实例,而不是使用已经创建的实例。
这些都是正确的,除了创建容器所调用的方法:
$container = $builder->buildDevContainer();
创建一个全新的容器,忽略你上面配置的;)(它实际上是一个静态方法,你可以很容易地使用它来创建一个新的容器,像这样:$container = ContainerBuilder::buildDevContainer();
)。
你应该用:
$container = $builder->build();