Symfony - Biểu thức

Như chúng ta đã thảo luận trước đó, ngôn ngữ diễn đạt là một trong những tính năng nổi bật của ứng dụng Symfony. Biểu thức Symfony chủ yếu được tạo ra để sử dụng trong môi trường cấu hình. Nó cho phép một người không phải là lập trình viên có thể cấu hình ứng dụng web mà không cần nỗ lực. Hãy để chúng tôi tạo một ứng dụng đơn giản để kiểm tra một biểu thức.

Step 1 - Tạo một dự án, expression-language-example.

cd /path/to/dir 
mkdir expression-language-example 
cd expression-language-example 
composer require symfony/expression-language

Step 2 - Tạo một đối tượng biểu thức.

use Symfony\Component\ExpressionLanguage\ExpressionLanguage; 
$language = new ExpressionLanguage();

Step 3 - Kiểm tra một biểu thức đơn giản.

echo "Evaluated Value: " . $language->evaluate('10 + 12') . "\r\n" ; 
echo "Compiled Code: " . $language->compile('130 % 34') . "\r\n" ;

Step 4 - Biểu thức Symfony mạnh mẽ đến mức nó có thể chặn một đối tượng PHP và thuộc tính của nó cũng như trong ngôn ngữ biểu thức.

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";

Đây, biểu thức product.priceproduct.price > 5 chặn lại $product tài sản của đối tượng price và đánh giá kết quả.

Mã hóa hoàn chỉnh như sau.

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"; 
?>

Kết quả

Evaluated Value: 22 
Compiled Code: (130 % 34) 
Product price is 10 
Is Product price higher than 5: 1