PHP7中的新抽象语法树(AST)带来了哪些具体变化?

更新于
2026-09-29 04:12:16
2阅读来源:SEO教程
  • 内容介绍
  • 相关推荐

本文共计2235个文字,预计阅读时间需要9分钟。

PHP7中的新抽象语法树(AST)带来了哪些具体变化?

本文字内容主要依据AST和RFC文档编写而成,为了便于理解,以下将从源文档中精选部分内容进行介绍。

原文档不会直接告知你抽象语法树是什么,这需要你自己去理解。以下是简化后的内容:

抽象语法树(AST)是一种表示代码结构的方法,它由节点组成,每个节点代表源代码中的一个元素。通过AST,可以方便地分析、修改和优化代码。

具体内容请参考以下链接:https://wiki.php.net/rfc/abstract_syntax_tree

本文大部分内容参照 AST 的 RFC 文档而成:wiki.php.net/rfc/abstract_syntax_tree,为了易于理解从源文档中节选部分进行介绍。

本文并不会告诉你抽象语法树是什么,这需要你自己去了解,这里只是描述 AST 给 PHP 带来的一些变化。

新的执行过程

PHP7 的内核中有一个重要的变化是加入了 AST。在 PHP5中,从 php 脚本到 opcodes 的执行的过程是:

1、Lexing:词法扫描分析,将源文件转换成 token 流;

2、Parsing:语法分析,在此阶段生成 op arrays。

3、PHP7 中在语法分析阶段不再直接生成 op arrays,而是先生成 AST,所以过程多了一步:

4、Lexing:词法扫描分析,将源文件转换成 token 流;

5、Parsing:语法分析,从 token 流生成抽象语法树;

6、Compilation:从抽象语法树生成 op arrays。

阅读全文

本文共计2235个文字,预计阅读时间需要9分钟。

PHP7中的新抽象语法树(AST)带来了哪些具体变化?

本文字内容主要依据AST和RFC文档编写而成,为了便于理解,以下将从源文档中精选部分内容进行介绍。

原文档不会直接告知你抽象语法树是什么,这需要你自己去理解。以下是简化后的内容:

抽象语法树(AST)是一种表示代码结构的方法,它由节点组成,每个节点代表源代码中的一个元素。通过AST,可以方便地分析、修改和优化代码。

具体内容请参考以下链接:https://wiki.php.net/rfc/abstract_syntax_tree

本文大部分内容参照 AST 的 RFC 文档而成:wiki.php.net/rfc/abstract_syntax_tree,为了易于理解从源文档中节选部分进行介绍。

本文并不会告诉你抽象语法树是什么,这需要你自己去了解,这里只是描述 AST 给 PHP 带来的一些变化。

新的执行过程

PHP7 的内核中有一个重要的变化是加入了 AST。在 PHP5中,从 php 脚本到 opcodes 的执行的过程是:

1、Lexing:词法扫描分析,将源文件转换成 token 流;

2、Parsing:语法分析,在此阶段生成 op arrays。

3、PHP7 中在语法分析阶段不再直接生成 op arrays,而是先生成 AST,所以过程多了一步:

4、Lexing:词法扫描分析,将源文件转换成 token 流;

5、Parsing:语法分析,从 token 流生成抽象语法树;

6、Compilation:从抽象语法树生成 op arrays。

阅读全文