Dumping and Manipulating the AST of Expressions ¶
It’s difficult to manipulate or inspect the expressions created with the ExpressionLanguage component, because the expressions are plain strings. A better approach is to turn those expressions into an AST. In computer science, AST (Abstract Syntax Tree) is "a tree representation of the structure of source code written in a programming language". In Symfony, a ExpressionLanguage AST is a set of nodes that contain PHP classes representing the given expression.
ExpressionLanguage コンポーネントで作成された式は単純な文字列であるため、操作や検査が困難です。より良いアプローチは、これらの式を AST に変換することです。コンピューター サイエンスでは、AST (AbstractSyntax Tree) は「プログラミング言語で記述されたソース コードの構造をツリーで表現したもの」です。 Symfony では、ExpressionLanguage AST は、指定された式を表す PHP クラスを含む一連のノードです。
Dumping the AST ¶
Call the getNodes() method after parsing any expression to get its AST:
式を解析して AST を取得した後、getNodes() メソッドを呼び出します。
1 2 3 4 5 6 7 8 9 10 11 12 |
use Symfony\Component\ExpressionLanguage\ExpressionLanguage;
$ast = (new ExpressionLanguage())
->parse('1 + 2', [])
->getNodes()
;
// dump the AST nodes for inspection
var_dump($ast);
// dump the AST nodes as a string representation
$astAsString = $ast->dump();
|
Manipulating the AST ¶
The nodes of the AST can also be dumped into a PHP array of nodes to allow manipulating them. Call the toArray() method to turn the AST into an array:
AST のノードをノードの PHP 配列にダンプして、それらを操作できるようにすることもできます。 toArray() メソッドを呼び出して、AST を配列に変換します。
1 2 3 4 5 6 7 |
// ...
$astAsArray = (new ExpressionLanguage())
->parse('1 + 2', [])
->getNodes()
->toArray()
;
|