Skip to content

Commit c293d3c

Browse files
committed
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
1 parent 07aa042 commit c293d3c

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

ContainerBuilder.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1075,6 +1075,14 @@ public function addExpressionLanguageProvider(ExpressionFunctionProviderInterfac
10751075
$this->expressionLanguageProviders[] = $provider;
10761076
}
10771077

1078+
/**
1079+
* @return ExpressionFunctionProviderInterface[]
1080+
*/
1081+
public function getExpressionLanguageProviders()
1082+
{
1083+
return $this->expressionLanguageProviders;
1084+
}
1085+
10781086
/**
10791087
* Returns the Service Conditionals.
10801088
*

Dumper/PhpDumper.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1399,6 +1399,11 @@ public function dumpParameter($name)
13991399
return sprintf("\$this->getParameter('%s')", strtolower($name));
14001400
}
14011401

1402+
/**
1403+
* @deprecated Deprecated since 2.6.2, to be removed in 3.0. Use Symfony\Component\DependencyInjection\ContainerBuilder::addExpressionLanguageProvider instead.
1404+
*
1405+
* @param ExpressionFunctionProviderInterface $provider
1406+
*/
14021407
public function addExpressionLanguageProvider(ExpressionFunctionProviderInterface $provider)
14031408
{
14041409
$this->expressionLanguageProviders[] = $provider;
@@ -1493,7 +1498,8 @@ private function getExpressionLanguage()
14931498
if (!class_exists('Symfony\Component\ExpressionLanguage\ExpressionLanguage')) {
14941499
throw new RuntimeException('Unable to use expressions as the Symfony ExpressionLanguage component is not installed.');
14951500
}
1496-
$this->expressionLanguage = new ExpressionLanguage(null, $this->expressionLanguageProviders);
1501+
$providers = array_merge($this->container->getExpressionLanguageProviders(), $this->expressionLanguageProviders);
1502+
$this->expressionLanguage = new ExpressionLanguage(null, $providers);
14971503
}
14981504

14991505
return $this->expressionLanguage;

0 commit comments

Comments
 (0)