PHP执行流程回顾
初识PHP
就php而言,它是一组符合一定规则的约定的指令。然后通过PHP的虚拟机(ZendE)将PHP指令转换成C语言指令,C语言又转变成汇编语言,最后汇编语言将根据处理器的规则转变成机器码执行。
为什么PHP被称为解释类语言?
首先来认识一下编译类语言,源语言到目标语言的转化过程由编译器完成,编译器常被分为,分析源程序过程:词法分析、语法分析、语义分析;和构造目标程序过程:中间代码生成、代码优化、目标代码生成。编译类语言在执行之前有一个形式上完全不同的等价程序生成。而PHP没有这分程序生成,它生成的是中间代码Opcode,这只是PHP内部的数据结构。
PHP的执行流程
1、词法分析 Scanning(Lexing),将PHP代码转换成语言片段(Tokens)
PHP是基于 re2c 语法分析依据表作为语法分析的。在PHP源嘛文件夹中可以看到 zend/zend_language_sanner.l这个规则文件。
2、语法分析 Parsing,将 Tokens 装换成简单有意义的表达式
Bison是一种通用目的的分析器生成器。它将LALR(1)上下文无关文法的描述转化成分析该文法的C程序。 使用它可以生成解释器,编译器,协议实现等多种程序
Bison分析器文件是定义了名为yyparse并且实现了某个语法的函数的C代码。PHP中 yyparse被zendparse代替。
3、编译 Compilation,将表达式编译成 Opcodes
4、执行 Execution ,znedE 顺序执行 Opcodes,每次一条,从而实现PHP脚本的功能,和机器指令运行相似。
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: