Сброс и манипуляция АСД выражений

Манипуляция или исследование выражений, созданных компонентом ExpressionLanguage сложна, так как они являются простыми строками. Лучшим подходом будет превратить эти выражения в АСД. В компьютерных технологиях, АСД (Абстрактное синтаксическое дерево) - это "представление структуры исходного кода, написанного на языке программирования, в виде дерева". ВSymfony, АСД ExpressionLanguage - это набор узлов, содержащих PHP классы, представляющие заданное выражение.

Сброс АСД

Вызовите метод getNodes() после анализа любого выражения, чтобы получить его АСД:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
use Symfony\Component\ExpressionLanguage\ExpressionLanguage;

$ast = (new ExpressionLanguage())
    ->parse('1 + 2', array())
    ->getNodes()
;

// сброс узлов АСД для инспекции
var_dump($ast);

// сброс узлов АСД в виде строк
$astAsString = $ast->dump();

Манипуляция АСД

Узлы АСД также можно сбросить в PHP массив узлов, чтобы позволить манипуляции с ними. Вызовите метод toArray(), чтобы превратить АСД в массив:

1
2
3
4
5
6
7
// ...

$astAsArray = (new ExpressionLanguage())
    ->parse('1 + 2', array())
    ->getNodes()
    ->toArray()
;

Эта документация является переводом официальной документации Symfony и предоставляется по свободной лицензии CC BY-SA 3.0.