2015-08-17 17:00:26 -07:00
< ? 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 Symfony\Component\DependencyInjection\Compiler ;
use Symfony\Component\DependencyInjection\ContainerBuilder ;
use Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException ;
/**
* Resolves all parameter placeholders " %somevalue% " to their real values .
*
* @ author Johannes M . Schmitt < schmittjoh @ gmail . com >
*/
class ResolveParameterPlaceHoldersPass implements CompilerPassInterface
{
/**
* Processes the ContainerBuilder to resolve parameter placeholders .
*
* @ param ContainerBuilder $container
*
* @ throws ParameterNotFoundException
*/
public function process ( ContainerBuilder $container )
{
$parameterBag = $container -> getParameterBag ();
foreach ( $container -> getDefinitions () as $id => $definition ) {
try {
$definition -> setClass ( $parameterBag -> resolveValue ( $definition -> getClass ()));
$definition -> setFile ( $parameterBag -> resolveValue ( $definition -> getFile ()));
$definition -> setArguments ( $parameterBag -> resolveValue ( $definition -> getArguments ()));
if ( $definition -> getFactoryClass ( false )) {
2015-08-27 12:03:05 -07:00
$definition -> setFactoryClass ( $parameterBag -> resolveValue ( $definition -> getFactoryClass ( false )));
2015-08-17 17:00:26 -07:00
}
$factory = $definition -> getFactory ();
if ( is_array ( $factory ) && isset ( $factory [ 0 ])) {
$factory [ 0 ] = $parameterBag -> resolveValue ( $factory [ 0 ]);
$definition -> setFactory ( $factory );
}
$calls = array ();
foreach ( $definition -> getMethodCalls () as $name => $arguments ) {
$calls [ $parameterBag -> resolveValue ( $name )] = $parameterBag -> resolveValue ( $arguments );
}
$definition -> setMethodCalls ( $calls );
$definition -> setProperties ( $parameterBag -> resolveValue ( $definition -> getProperties ()));
} catch ( ParameterNotFoundException $e ) {
$e -> setSourceId ( $id );
throw $e ;
}
}
$aliases = array ();
foreach ( $container -> getAliases () as $name => $target ) {
$aliases [ $parameterBag -> resolveValue ( $name )] = $parameterBag -> resolveValue ( $target );
}
$container -> setAliases ( $aliases );
$parameterBag -> resolve ();
}
}