Symfony中Container和ContainerBuilder的区别

时间:2017-06-07 14:13:18

标签: php symfony

我正在尝试理解Symfony核心,但我并不完全确定DI组件中发生的一些事情。

ContainerContainerBuilder之间有什么区别?该名称表明ContainerBuilder用于构建Container对象,但对于docs,它可以直接实例化并用作容器:

$container = new ContainerBuilder();
$container->register('mailer', 'Mailer');

为什么不在这里使用$container = new Container()

2 个答案:

答案 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

进行比较