我正在尝试理解Symfony核心,但我并不完全确定DI组件中发生的一些事情。
Container
和ContainerBuilder
之间有什么区别?该名称表明ContainerBuilder
用于构建Container
对象,但对于docs,它可以直接实例化并用作容器:
$container = new ContainerBuilder();
$container->register('mailer', 'Mailer');
为什么不在这里使用$container = new Container()
?
答案 0 :(得分:0)
答案在于ContainerBuilder的类定义:
的Symfony /组件/ DependencyInjection / ContainerBuilder.php:
class ContainerBuilder extends Container implements TaggedContainerInterface
因此,ContainerBuilder
基本上是Container
,它只是增加了一些功能。例如,Container
没有您在示例中提供的register
方法。
答案 1 :(得分:0)
好的,下面来自Symfony的文档(http://api.symfony.com/3.0/Symfony/Component/DependencyInjection/ContainerBuilder.html):
class ContainerBuilder extends Container implements TaggedContainerInterface
ContainerBuilder是一个DI容器,提供一个API来轻松描述服务。
您看,ContainerBuilder
延伸 Container
。将文档与http://api.symfony.com/3.0/Symfony/Component/DependencyInjection/Container.html