From 8425e4d9d011d34a0e3527dc7365602727b6a818 Mon Sep 17 00:00:00 2001 From: Christophe Coevoet Date: Wed, 17 Dec 2014 10:56:43 +0100 Subject: [PATCH] Unify the way to provide expression functions for the DI container Function providers registered on the ContainerBuilder are now reused by the PhpDumper when dumping the container instead of forcing to register them again. Closes #13012 --- .../Component/DependencyInjection/ContainerBuilder.php | 8 ++++++++ .../Component/DependencyInjection/Dumper/PhpDumper.php | 8 +++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php index 7f5a1143c764..3f945d157fdb 100644 --- a/src/Symfony/Component/DependencyInjection/ContainerBuilder.php +++ b/src/Symfony/Component/DependencyInjection/ContainerBuilder.php @@ -1075,6 +1075,14 @@ public function addExpressionLanguageProvider(ExpressionFunctionProviderInterfac $this->expressionLanguageProviders[] = $provider; } + /** + * @return ExpressionFunctionProviderInterface[] + */ + public function getExpressionLanguageProviders() + { + return $this->expressionLanguageProviders; + } + /** * Returns the Service Conditionals. * diff --git a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php index 3c318a656b58..9bc622503543 100644 --- a/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php +++ b/src/Symfony/Component/DependencyInjection/Dumper/PhpDumper.php @@ -1399,6 +1399,11 @@ public function dumpParameter($name) return sprintf("\$this->getParameter('%s')", strtolower($name)); } + /** + * @deprecated Deprecated since 2.6.2, to be removed in 3.0. Use Symfony\Component\DependencyInjection\ContainerBuilder::addExpressionLanguageProvider instead. + * + * @param ExpressionFunctionProviderInterface $provider + */ public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider) { $this->expressionLanguageProviders[] = $provider; @@ -1493,7 +1498,8 @@ private function getExpressionLanguage() if (!class_exists('Symfony\Component\ExpressionLanguage\ExpressionLanguage')) { throw new RuntimeException('Unable to use expressions as the Symfony ExpressionLanguage component is not installed.'); } - $this->expressionLanguage = new ExpressionLanguage(null, $this->expressionLanguageProviders); + $providers = array_merge($this->container->getExpressionLanguageProviders(), $this->expressionLanguageProviders); + $this->expressionLanguage = new ExpressionLanguage(null, $providers); } return $this->expressionLanguage;