vineg/php-parser

用 PHP 编写的 PHP 解析器

v0.9.4 2013-08-25 17:11 UTC

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 中找到所有其他信息。