Вход Регистрация
Файл: symfony-2.7/src/Symfony/Component/DependencyInjection/Compiler/MergeExtensionConfigurationPass.php
Строк: 161
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace SymfonyComponentDependencyInjectionCompiler;

use 
SymfonyComponentDependencyInjectionContainerBuilder;
use 
SymfonyComponentDependencyInjectionExtensionPrependExtensionInterface;

/**
 * Merges extension configs into the container builder.
 *
 * @author Fabien Potencier <fabien@symfony.com>
 */
class MergeExtensionConfigurationPass implements CompilerPassInterface
{
    
/**
     * {@inheritdoc}
     */
    
public function process(ContainerBuilder $container)
    {
        
$parameters $container->getParameterBag()->all();
        
$definitions $container->getDefinitions();
        
$aliases $container->getAliases();
        
$exprLangProviders $container->getExpressionLanguageProviders();

        foreach (
$container->getExtensions() as $extension) {
            if (
$extension instanceof PrependExtensionInterface) {
                
$extension->prepend($container);
            }
        }

        foreach (
$container->getExtensions() as $name => $extension) {
            if (!
$config $container->getExtensionConfig($name)) {
                
// this extension was not called
                
continue;
            }
            
$config $container->getParameterBag()->resolveValue($config);

            
$tmpContainer = new ContainerBuilder($container->getParameterBag());
            
$tmpContainer->setResourceTracking($container->isTrackingResources());
            
$tmpContainer->addObjectResource($extension);

            foreach (
$exprLangProviders as $provider) {
                
$tmpContainer->addExpressionLanguageProvider($provider);
            }

            
$extension->load($config$tmpContainer);

            
$container->merge($tmpContainer);
        }

        
$container->addDefinitions($definitions);
        
$container->addAliases($aliases);
        
$container->getParameterBag()->add($parameters);
    }
}
Онлайн: 1
Реклама