PHP Zend引擎编译代码或解释器

时间:2018-11-30 14:21:17

标签: php

根据维基百科:

  

脚本被加载到内存中并编译为Zend操作码

下面说一行:

  

解释器部分分析输入代码,将其翻译,然后   执行它。

据我所知,代码已加载到内存中,然后进行词法分析,解析并编译为操作码。即使在关于引擎的大量文章之后,我也陷入了混乱。到底PHP代码是编译还是解释了?

2 个答案:

答案 0 :(得分:1)

我认为“编译”和“解释”之间的区别在实践中没有计算机科学课程所暗示的那么清晰,“运行时环境”和“虚拟机”之间的区别也是如此。

答案实际上是两者都是:Zend Engine首先将您的PHP代码编译为称为“ opcodes”的中间表示形式。然后解释这些操作码以执行代码。

在某些方面,这类似于Java首先被编译为字节码,然后在Java虚拟机上执行的方式。但是,在Zend Engine中执行代码的“ VM”没有像真正的处理器那样定义,并且与PHP语言紧密相关。因此,它的行为更像是传统的口译员,但是却没有人会写这种语言。

答案 1 :(得分:0)

  

Zend Engine负责PHP中的以下任务:

     

高性能解析(包括语法检查),内存中编译和执行PHP脚本[..]

来源:http://www.zend.com/products/zend_engine/in_depth