Symfony - 表达式
正如我们之前所讨论的,表达式语言是 Symfony 应用程序的显著特点之一。Symfony 表达式主要用于配置环境。它使非程序员能够轻松配置 Web 应用程序。让我们创建一个简单的应用程序来测试表达式。
步骤 1 − 创建一个项目,expression-language-example。
cd /path/to/dir mkdir expression-language-example cd expression-language-example composer require symfony/expression-language
步骤 2 −创建一个表达式对象。
use Symfony\Component\ExpressionLanguage\ExpressionLanguage; $language = new ExpressionLanguage();
步骤 3 − 测试一个简单的表达式。
echo "Evaluated Value: " . $language->evaluate('10 + 12') . " " ; echo "Compiled Code: " . $language->compile('130 % 34') . " " ;
步骤 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,)) . " "; echo "Is Product price higher than 5: " . $language ->evaluate('product.price > 5', array('product' => $product,)) . " ";
此处,表达式 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') . " " ; echo "Compiled Code: " . $language->compile('130 % 34') . " " ; 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,)) . " "; echo "Is Product price higher than 5: " . $language ->evaluate('product.price > 5', array('product' => $product,)) . " "; ?>
结果
Evaluated Value: 22 Compiled Code: (130 % 34) Product price is 10 Is Product price higher than 5: 1