如何使用Nikic / PHPParser获得变量值

问题描述

我有以下PHP代码文件

<?PHP
class ObjectTest extends AppTest
{
    public function getList()
    {
        return [
            '1234','5678',];
    }
}

现在我喜欢使用nikic / PHP-Parser来获取getList函数的返回值

我该怎么做?

解决方法

以下方法可以做到:

$parser = (new ParserFactory())->create(ParserFactory::PREFER_PHP7);

try {
    $ast = $parser->parse($code);
} catch (Error $error) {
    // Handle error...
}

$class = $ast[0];

$method = $class->getMethod('getList');

$returnStatement = $method->getStmts()[0];

$returnedValues = array_map(fn($item) => $item->value->value,$returnStatement->expr->items);

print_r($returnedValues);  // [1234,5678]

Demo

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...