После настройки $ast = ast\parse_code('<?php $a=1;', $version=50);
Я могу видеть содержимое узла, но хотел точно знать, каким был тип узла. Вывод, который я вижу, просто дает целочисленное значение константы назначенного вида — есть ли способ выяснить, к какому виду это относится (то есть получить имя константы)?
php > var_dump($ast);
object(ast\Node)#1 (4) {
["kind"]=>
int(132)
["flags"]=>
int(0)
["lineno"]=>
int(1)
["children"]=>
array(1) {
[0]=>
object(ast\Node)#2 (4) {
["kind"]=>
int(517)
["flags"]=>
int(0)
["lineno"]=>
int(1)
["children"]=>
array(2) {
["var"]=>
object(ast\Node)#3 (4) {
["kind"]=>
int(256)
["flags"]=>
int(0)
["lineno"]=>
int(1)
["children"]=>
array(1) {
["name"]=>
string(1) "a"}
}
["expr"]=>
int(1)
}
}
}
}
Если вы знаете тип искомого узла, вы можете сравнить его с данным видом, т.е.
$node->kind === \ast\AST_ASSIGN
Однако для общего поиска имени библиотека предоставляет ast\get_kind_name()
(источник). Например:
php > echo \ast\get_kind_name(517);
AST_ASSIGN
Если вам нужен более простой способ просмотра AST, библиотека предоставляет util.php
файл (источник) с функцией, которая выдает AST. Подробности его использования можно найти ниже первого примера в эта секция (скопировано здесь).
require 'path/to/util.php';
echo ast_dump(ast\parse_code('<?php $a=1;', $version=50)), "\n";
Других решений пока нет …