loganhenson/php-parser

用PHP编写的PHP解析器

4.0.3 2017-04-21 20:41 UTC

README

Build Status Coverage Status

这是一个PHP 5.2到PHP 7.1的解析器,用PHP编写。它的目的是简化静态代码分析和操作。

3.x版本文档(稳定版;适用于PHP >= 5.5;用于解析PHP 5.2到PHP 7.1)。

2.x版本文档(不受支持;适用于PHP >= 5.4;用于解析PHP 5.2到PHP 7.0)。

概要

该解析器将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)。

安装

首选安装方法是composer

php composer.phar require nikic/php-parser

文档

  1. 简介
  2. 基本组件的使用
  3. 其他节点树表示
  4. 代码生成
  5. 常见问题解答

组件文档

  1. 错误处理
  2. 词法分析器