as we discussed earlier, expression language is one of the salient features of symfony application. symfony expression is mainly created to be used in a configuration environment. it enables a non-programmer to configure the web application with little effort. let us create a simple application to test an expression.
step 1 − create a project, expression-language-example.
cd /path/to/dir mkdir expression-language-example cd expression-language-example composer require symfony/expression-language
step 2 − create an expression object.
use symfony\component\expressionlanguage\expressionlanguage; $language = new expressionlanguage();
step 3 − test a simple expression.
echo "evaluated value: " . $language->evaluate('10 + 12') . "\r\n" ;
echo "compiled code: " . $language->compile('130 % 34') . "\r\n" ;
step 4 − symfony expression is powerful such that it can intercept a php object and its property as well in the expression language.
class product {
public $name;
public $price;
}
$product = new product();
$product->name = 'cake';
$product->price = 10;
echo "product price is " . $language
->evaluate('product.price', array('product' => $product,)) . "\r\n";
echo "is product price higher than 5: " . $language
->evaluate('product.price > 5', array('product' => $product,)) . "\r\n";
here, the expression product.price and product.price > 5 intercept $product object's property price and evaluate the result.
the complete coding is as follows.
main.php
<?php
require __dir__ . '/vendor/autoload.php';
use symfony\component\expressionlanguage\expressionlanguage;
$language = new expressionlanguage();
echo "evaluated value: " . $language->evaluate('10 + 12') . "\r\n" ;
echo "compiled code: " . $language->compile('130 % 34') . "\r\n" ;
class product {
public $name;
public $price;
}
$product = new product();
$product->name = 'cake';
$product->price = 10;
echo "product price is " . $language
->evaluate('product.price', array('product' => $product,)) . "\r\n";
echo "is product price higher than 5: " . $language
->evaluate('product.price > 5', array('product' => $product,)) . "\r\n";
?>
result
evaluated value: 22 compiled code: (130 % 34) product price is 10 is product price higher than 5: 1