Symfony-expression

提供:Dev Guides
移動先:案内検索

symfony-式

前に説明したように、式言語はSymfonyアプリケーションの顕著な特徴の1つです。 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') . "\r\n" ;
echo "Compiled Code: " . $language->compile('130 % 34') . "\r\n" ;
  • ステップ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