介绍
PHP-Parse 是分析 PHP 代码生成 AST 的库,分析出可读性很高的对象数据结构,方便后续的更新和遍历。
PHP-Parse 的主要作用是修改原有代码(比如插入自定义的代码片段),生成新的代理类 。框架内生成代理类,处理注入有用到,比如 Hyperf 的 DI 组件利用反射和 PHP-Parse 实现了注入。
AST 的简单介绍 具体搜索,资料很多,讲得很好
比如下面 PHP 代码会被解析成
<?php
namespace NameSpace;
class SomeClass
{
protected function echo()
{
echo 'Hello';
}
}
array(
0: Stmt_Namespace(
name: Name(
parts: array(
0: NameSpace
)
)
stmts: array(
0: Stmt_Class(
attrGroups: array(
)
flags: 0
name: Identifier(
name: SomeClass
)
extends: null
implements: array(
)
stmts: array(
0: Stmt_ClassMethod(
attrGroups: array(
)
flags: MODIFIER_PROTECTED (2)
byRef: false
name: Identifier(
name: echo
)
params: array(
)
returnType: null
stmts: array(
0: Stmt_Echo(
exprs: array(
0: Scalar_String(
value: World
)
)
)
)
)
)
)
)
)
)
大致对照看一下,解析后的