Symfony - นิพจน์
ดังที่เราได้กล่าวไปก่อนหน้านี้ภาษานิพจน์เป็นหนึ่งในคุณสมบัติเด่นของแอปพลิเคชัน Symfony นิพจน์ Symfony ส่วนใหญ่สร้างขึ้นเพื่อใช้ในสภาพแวดล้อมการกำหนดค่า ช่วยให้ผู้ที่ไม่ใช่โปรแกรมเมอร์สามารถกำหนดค่าเว็บแอปพลิเคชันได้โดยใช้ความพยายามเพียงเล็กน้อย ให้เราสร้างแอปพลิเคชันง่ายๆเพื่อทดสอบนิพจน์
Step 1 - สร้างโครงการ expression-language-example.
cd /path/to/dir
mkdir expression-language-example
cd expression-language-example
composer require symfony/expression-language
Step 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