Symfony - Выражение
Как мы обсуждали ранее, язык выражений - одна из основных особенностей приложения Symfony. Выражение Symfony в основном создано для использования в среде конфигурации. Это позволяет непрограммисту без особых усилий настроить веб-приложение. Давайте создадим простое приложение для проверки выражения.
Step 1 - Создать проект, expression-language-example.
cd /path/to/dir 
mkdir expression-language-example 
cd expression-language-example 
composer require symfony/expression-languageStep 2 - Создайте объект выражения.
use Symfony\Component\ExpressionLanguage\ExpressionLanguage; 
$language = new ExpressionLanguage();Step 3 - Проверьте простое выражение.
echo "Evaluated Value: " . $language->evaluate('10 + 12') . "\r\n" ; 
echo "Compiled Code: " . $language->compile('130 % 34') . "\r\n" ;Step 4 - Выражение Symfony мощно, так как оно может перехватывать объект PHP и его свойство, а также в языке выражений.
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";Здесь выражение product.price и product.price > 5 перехватить $product свойство объекта price и оцените результат.
Полное кодирование выглядит следующим образом.
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"; 
?>Результат
Evaluated Value: 22 
Compiled Code: (130 % 34) 
Product price is 10 
Is Product price higher than 5: 1