public addExpressionLanguageProvider ( Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface $provider ) | ||
$provider | Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface |
public function testExpressionLanguageProviderForwarding() { $tmpProviders = array(); $extension = $this->getMockBuilder('Symfony\\Component\\DependencyInjection\\Extension\\ExtensionInterface')->getMock(); $extension->expects($this->any()) ->method('getXsdValidationBasePath') ->will($this->returnValue(false)); $extension->expects($this->any()) ->method('getNamespace') ->will($this->returnValue('http://example.org/schema/dic/foo')); $extension->expects($this->any()) ->method('getAlias') ->will($this->returnValue('foo')); $extension->expects($this->once()) ->method('load') ->will($this->returnCallback(function (array $config, ContainerBuilder $container) use (&$tmpProviders) { $tmpProviders = $container->getExpressionLanguageProviders(); })); $provider = $this->getMockBuilder('Symfony\\Component\\ExpressionLanguage\\ExpressionFunctionProviderInterface')->getMock(); $container = new ContainerBuilder(new ParameterBag()); $container->registerExtension($extension); $container->prependExtensionConfig('foo', array('bar' => true)); $container->addExpressionLanguageProvider($provider); $pass = new MergeExtensionConfigurationPass(); $pass->process($container); $this->assertEquals(array($provider), $tmpProviders); }
/** * {@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->getParameterBag()->add($parameters); } $container->addDefinitions($definitions); $container->addAliases($aliases); }
public function build(ContainerBuilder $container) { $container->addCompilerPass(new ParameterReplacementPass()); $container->addExpressionLanguageProvider(new FunctionProvider()); }