From 3f2b9176e64c07a420fe109dcbab0c9e67d3debb Mon Sep 17 00:00:00 2001 From: "Johannes M. Schmitt" Date: Sun, 18 Mar 2012 21:15:55 -0600 Subject: [PATCH] added a configurable extension base class --- .../ConfigurableExtension.php | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100755 src/Symfony/Component/HttpKernel/DependencyInjection/ConfigurableExtension.php diff --git a/src/Symfony/Component/HttpKernel/DependencyInjection/ConfigurableExtension.php b/src/Symfony/Component/HttpKernel/DependencyInjection/ConfigurableExtension.php new file mode 100755 index 0000000000..97e7b9e41c --- /dev/null +++ b/src/Symfony/Component/HttpKernel/DependencyInjection/ConfigurableExtension.php @@ -0,0 +1,45 @@ + + * + * This source file is subject to the MIT license that is bundled + * with this source code in the file LICENSE. + */ + +namespace Symfony\Component\HttpKernel\DependencyInjection; + +use Symfony\Component\DependencyInjection\ContainerBuilder; + +/** + * This extension sub-class provides first-class integration with the + * Config/Definition Component. + * + * You can use this as base class if you + * + * a) use the Config/Definition component for configuration + * b) your configuration class is named "Configuration" and + * c) the configuration class resides in the DependencyInjection sub-folder + * + * @author Johannes M. Schmitt + */ +abstract class ConfigurableExtension extends Extension +{ + /** + * {@inheritDoc} + */ + public final function load(array $configs, ContainerBuilder $container) + { + $this->loadInternal($this->processConfiguration($this->getConfiguration(array(), $container), $configs), $container); + } + + /** + * Configures the passed container according to the merged configuration. + * + * @param array $mergedConfig + * @param ContainerBuilder $container + */ + abstract protected function loadInternal(array $mergedConfig, ContainerBuilder $container); +} \ No newline at end of file