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
This commit is contained in:
parent
c18cb4c7b2
commit
8425e4d9d0
@ -1075,6 +1075,14 @@ class ContainerBuilder extends Container implements TaggedContainerInterface
|
||||
$this->expressionLanguageProviders[] = $provider;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ExpressionFunctionProviderInterface[]
|
||||
*/
|
||||
public function getExpressionLanguageProviders()
|
||||
{
|
||||
return $this->expressionLanguageProviders;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the Service Conditionals.
|
||||
*
|
||||
|
@ -1399,6 +1399,11 @@ EOF;
|
||||
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 @@ EOF;
|
||||
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;
|
||||
|
Reference in New Issue
Block a user