Symfony - Expresión
Como comentamos anteriormente, el lenguaje de expresión es una de las características más destacadas de la aplicación Symfony. La expresión Symfony se crea principalmente para usarse en un entorno de configuración. Permite a un no programador configurar la aplicación web con poco esfuerzo. Creemos una aplicación sencilla para probar una expresión.
Step 1 - Crear un proyecto, expression-language-example.
cd /path/to/dir
mkdir expression-language-example
cd expression-language-example
composer require symfony/expression-language
Step 2 - Crea un objeto de expresión.
use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
$language = new ExpressionLanguage();
Step 3 - Prueba una expresión simple.
echo "Evaluated Value: " . $language->evaluate('10 + 12') . "\r\n" ;
echo "Compiled Code: " . $language->compile('130 % 34') . "\r\n" ;
Step 4 - La expresión Symfony es tan poderosa que puede interceptar un objeto PHP y su propiedad también en el lenguaje de expresió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";
Aquí, la expresión product.price y product.price > 5 interceptar $product propiedad del objeto price y evaluar el resultado.
La codificación completa es la siguiente.
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";
?>
Resultado
Evaluated Value: 22
Compiled Code: (130 % 34)
Product price is 10
Is Product price higher than 5: 1