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 协议》,转载必须注明作者和本文链接
join_jiang
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

学习了!谢谢!

1年前 评论
666666 (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!