Symfony - İfade

Daha önce tartıştığımız gibi, ifade dili Symfony uygulamasının göze çarpan özelliklerinden biridir. Symfony ifadesi esas olarak bir konfigürasyon ortamında kullanılmak üzere oluşturulur. Programcı olmayanların web uygulamasını çok az çabayla yapılandırmasını sağlar. Bir ifadeyi test etmek için basit bir uygulama oluşturalım.

Step 1 - Bir proje oluşturun, expression-language-example.

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

Step 2 - Bir ifade nesnesi oluşturun.

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

Step 3 - Basit bir ifadeyi test edin.

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

Step 4 - Symfony ifadesi, bir PHP nesnesini ve özelliğinin yanı sıra ifade dilinde de engelleyebilecek kadar güçlüdür.

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

İşte ifade product.price ve product.price > 5 tutmak $product nesnenin özelliği price ve sonucu değerlendirin.

Tam kodlama aşağıdaki gibidir.

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

Sonuç

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