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