php - 如何使用 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]
推荐阅读
- xcode - 在 Xcode 中找不到后台模式(对于我的项目)
- java - 将代理的 EntityManager 注入资源时出现 IncompatibleClassChangeError
- sql - 如何将两个选择结果并排放在列中?
- javascript - Photoshop 2020:“错误 1302:没有这样的元素”
- c# - 当用户在 vsto 插件中的多个 Outlook 窗口之间切换时,了解哪个 Outlook 窗口获得焦点的事件
- javascript - 剪辑路径动画(CSS / JS)的mouseenter问题
- c - 来自 RFC4475 的示例是否可用作 C++ 源字符串?
- entity-framework-core - 无法登录 - 用户“用户名”登录失败
- reactjs - 如何将 Autodesk Forge 扩展与 React.js 一起使用?
- java - 如何找到具有所有不同字符的字符串的排列?