| name | symfony-7-4-expression-language |
| description | Symfony 7.4 ExpressionLanguage component reference for compiling and evaluating expressions. Use when working with expression evaluation, expression compilation, custom expression functions, expression providers, expression caching, or any ExpressionLanguage-related Symfony code. Triggers on: ExpressionLanguage, expression evaluation, expression compilation, custom functions, ExpressionFunctionProviderInterface, ParsedExpression, expression syntax, evaluate(), compile(), expression linting. |
Symfony 7.4 ExpressionLanguage Component
GitHub: https://github.com/symfony/expression-language
Docs: https://symfony.com/doc/7.4/components/expression_language.html
Quick Reference
Basic Usage - Evaluate & Compile
use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
$expressionLanguage = new ExpressionLanguage();
$result = $expressionLanguage->evaluate('1 + 2');
$code = $expressionLanguage->compile('1 + 2');
Passing Variables
$expressionLanguage->evaluate(
'fruit.variety',
['fruit' => $apple]
);
$expressionLanguage->compile(
'fruit.variety',
['fruit']
);
Linting Expressions
use Symfony\Component\ExpressionLanguage\Parser;
$expressionLanguage->lint('1 + 2', []);
$expressionLanguage->lint(
'unknown_var',
[],
Parser::IGNORE_UNKNOWN_VARIABLES | Parser::IGNORE_UNKNOWN_FUNCTIONS
);
Registering Custom Functions
$expressionLanguage->register('lowercase',
function ($str): string {
return sprintf('(is_string(%1$s) ? strtolower(%1$s) : %1$s)', $str);
},
function ($arguments, $str): string {
if (!is_string($str)) {
return $str;
}
return strtolower($str);
}
);
$expressionLanguage->evaluate('lowercase("HELLO")');
Expression Function Provider
use Symfony\Component\ExpressionLanguage\ExpressionFunction;
use Symfony\Component\ExpressionLanguage\ExpressionFunctionProviderInterface;
class StringExpressionLanguageProvider implements ExpressionFunctionProviderInterface
{
public function getFunctions(): array
{
return [
ExpressionFunction::fromPhp('strtoupper'),
];
}
}
$expressionLanguage = new ExpressionLanguage(null, [
new StringExpressionLanguageProvider(),
]);
Caching with PSR-6
use Symfony\Component\Cache\Adapter\RedisAdapter;
$cache = new RedisAdapter();
$expressionLanguage = new ExpressionLanguage($cache);
Full Documentation
For complete details including AST dumping/editing, serialized expressions, all parser flags, and advanced extension patterns, see references/expression-language.md.