vineg / php-parser
用 PHP 编写的 PHP 解析器
v0.9.4
2013-08-25 17:11 UTC
Requires
- php: >=5.2
This package is not auto-updated.
Last update: 2024-09-24 06:07:04 UTC
README
这是一个用 PHP 编写的 PHP 5.5(及更早版本)解析器。它的目的是简化静态代码分析和操作。
文档可以在 doc/
目录中找到。
注意:该项目是实验性的,因此 API 可能会更改。
总结
基本上,解析器所做的不过是将一些 PHP 代码转换成抽象语法树。("nothing more" 这里的意思有点讽刺,因为 PHP 的语法...嗯,我们姑且说它“不太友好”,这使得解析 PHP 非常困难。)
例如,如果你将此代码放入解析器
<?php echo 'Hi', 'World'; hello\world('foo', 'bar' . 'baz');
你将得到一个大致如下所示的语法树
array(
0: Stmt_Echo(
exprs: array(
0: Scalar_String(
value: Hi
)
1: Scalar_String(
value: World
)
)
)
1: Expr_FuncCall(
name: Name(
parts: array(
0: hello
1: world
)
)
args: array(
0: Arg(
value: Scalar_String(
value: foo
)
byRef: false
)
1: Arg(
value: Expr_Concat(
left: Scalar_String(
value: bar
)
right: Scalar_String(
value: baz
)
)
byRef: false
)
)
)
)
然后你可以使用这个语法树,例如,进行代码的静态分析(例如,查找编程错误或安全问题)。
此外,你可以将语法树转换回 PHP 代码。这允许你进行代码预处理(如自动将代码移植到更早的 PHP 版本)。
所以,总结一下。你可以在 docs 中找到所有其他信息。