From 59e2e970551a44f058b3719b42d37eb037a9888e Mon Sep 17 00:00:00 2001 From: Johannes Schmitt Date: Fri, 7 Oct 2011 21:40:14 +0200 Subject: [PATCH] improves extensibility between bundles --- src/Symfony/Component/HttpKernel/Bundle/Bundle.php | 9 +++++++++ .../Component/HttpKernel/Bundle/BundleInterface.php | 9 +++++++++ src/Symfony/Component/HttpKernel/Kernel.php | 4 ++++ 3 files changed, 22 insertions(+) diff --git a/src/Symfony/Component/HttpKernel/Bundle/Bundle.php b/src/Symfony/Component/HttpKernel/Bundle/Bundle.php index 494feabe58..d46c788800 100644 --- a/src/Symfony/Component/HttpKernel/Bundle/Bundle.php +++ b/src/Symfony/Component/HttpKernel/Bundle/Bundle.php @@ -11,6 +11,8 @@ namespace Symfony\Component\HttpKernel\Bundle; +use Symfony\Component\DependencyInjection\Extension\ExtensionInterface; + use Symfony\Component\DependencyInjection\ContainerAware; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Container; @@ -97,6 +99,13 @@ abstract class Bundle extends ContainerAware implements BundleInterface } } + /** + * {@inheritDoc} + */ + public function configureContainerExtension(ExtensionInterface $extension) + { + } + /** * Gets the Bundle namespace. * diff --git a/src/Symfony/Component/HttpKernel/Bundle/BundleInterface.php b/src/Symfony/Component/HttpKernel/Bundle/BundleInterface.php index 99d591f9e3..2294c37cfd 100644 --- a/src/Symfony/Component/HttpKernel/Bundle/BundleInterface.php +++ b/src/Symfony/Component/HttpKernel/Bundle/BundleInterface.php @@ -11,6 +11,8 @@ namespace Symfony\Component\HttpKernel\Bundle; +use Symfony\Component\DependencyInjection\Extension\ExtensionInterface; + use Symfony\Component\DependencyInjection\ContainerBuilder; /** @@ -56,6 +58,13 @@ interface BundleInterface */ function getContainerExtension(); + /** + * Allows the bundle to configure extensions of other bundles. + * + * @param ExtensionInterface $extension + */ + function configureContainerExtension(ExtensionInterface $extension); + /** * Returns the bundle parent name. * diff --git a/src/Symfony/Component/HttpKernel/Kernel.php b/src/Symfony/Component/HttpKernel/Kernel.php index e8521ba59e..750006a9ef 100644 --- a/src/Symfony/Component/HttpKernel/Kernel.php +++ b/src/Symfony/Component/HttpKernel/Kernel.php @@ -628,6 +628,10 @@ abstract class Kernel implements KernelInterface $bundle->build($container); if ($extension = $bundle->getContainerExtension()) { + foreach ($this->bundles as $b) { + $b->configureContainerExtension($extension); + } + $container->registerExtension($extension); $extensions[] = $extension->getAlias(); }