基于其他捆绑包Symfony2 DI加载服务

时间:2014-11-15 16:57:44

标签: php symfony dependency-injection

在我的Extension类中,我只想在安装了其他一些软件包的情况下加载某些服务。 但是由于传递给load方法的ContainerBuilder是一个临时的空方法,我不能使用$container->hasExtension("foo_bar")等方法来实现这个目标吗?

1 个答案:

答案 0 :(得分:1)

所有捆绑包都在kernel.bundles参数中。用它来检查一个是否可用。例如:

public function load(ContainerBuilder $container, array $configs)
{
    $bundles = $container->getParameter('kernel.bundles');
    if (isset($bundles['AcmeDemoBundle'])) {
        // ...
    }

    /* or
    if (in_array('Acme\DemoBundle\AcmeDemoBundle', $bundles)) {
        // ...
    }
    */
}

如果您想要调整其他捆绑服务,或者您需要阅读所有其他服务,那么您将要使用编译器通行证。