PHP-DI Symfony桥接器如何工作以及如何正确设置它?
我通过让PHP-DI6和SYMFONY4的组合正常工作而获得了成功。因此,我想更深入地了解它是如何工作的/应该如何工作的,并检查我是否正确地配置了它 默认情况下,Symfony使用自己的DI容器。在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
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才起作用的
还有别的事要做吗
如果您已经遵循了文档中描述的步骤,那么就不应该再做其他事情了
至于你的另一个问题