PHP-DI Symfony桥接器如何工作以及如何正确设置它?

PHP-DI Symfony桥接器如何工作以及如何正确设置它?,symfony,dependency-injection,symfony4,php-di,Symfony,Dependency Injection,Symfony4,Php Di,我通过让PHP-DI6和SYMFONY4的组合正常工作而获得了成功。因此,我想更深入地了解它是如何工作的/应该如何工作的,并检查我是否正确地配置了它 默认情况下,Symfony使用自己的DI容器。在App\Kernel中有一个“hook”方法configureContainer(…)。在此方法中,可以配置驾驶员信息中心(DIC)。DIC配置的另一个位置是services.yaml 现在,我安装php di/php di和php di/symfony桥,并在App\Kernel#buildPHPD

我通过让PHP-DI6和SYMFONY4的组合正常工作而获得了成功。因此,我想更深入地了解它是如何工作的/应该如何工作的,并检查我是否正确地配置了它

默认情况下,Symfony使用自己的DI容器。在
App\Kernel
中有一个“hook”方法
configureContainer(…)
。在此方法中,可以配置驾驶员信息中心(DIC)。DIC配置的另一个位置是
services.yaml

现在,我安装
php di/php di
php di/symfony桥
,并在
App\Kernel#buildPHPDIContainer(…)
中进行设置,如下所述:

/*
Cannot use ContainerBuilder as in the PHP-DI docu,
since its already in use by the AppKernel\configureContainer(...).
*/
use DI\ContainerBuilder as PhpDiContainerBuilder;
class AppKernel extends \DI\Bridge\Symfony\Kernel
{
    // ...
    protected function buildPHPDIContainer(PhpDiContainerBuilder $builder)
    {
        $builder->addDefinitions('/path/to/file/returning/definitions/array.php');
        return $builder->build();
    }
}
理论部分:

之后会发生什么?Symfony DIC是否变为非活动状态?如果不是,是否意味着应用程序同时使用两个DIC?禁用Symfony的DIC有意义吗

总的来说:PHP-DI Symfony桥接器的想法/方法是什么——替换框架的DIC还是将自身集成到其中

实用部分:

我在上面描述了使PHP-DI与Symfony一起工作的设置步骤。还有别的事要做吗?例如,
AppKernel\configureContainer(…)
应该保持原样,还是应该成为PHP-DI的
AppKernel\buildPHPDIContainer(…)
的代理?是否应删除
服务.yaml

之后会发生什么

PHP-DI Symfony桥接器的想法/方法是什么——替换框架的DIC还是将自身集成到其中

替换Symfony容器。这个“桥”是PHP-DI和Symfony DI的代理:如果在Symfony的DI容器中找到一个条目,它将返回该条目,否则它将在PHP-DI中查找

Symfony DIC是否变为非活动状态

没有

如果不是,是否意味着应用程序同时使用两个DIC

禁用Symfony的DIC有意义吗

这并不是真的,因为Symfony中的很多东西都是由于Symfony的DI容器的config才起作用的

还有别的事要做吗

如果您已经遵循了文档中描述的步骤,那么就不应该再做其他事情了

至于你的另一个问题