根据维基百科:
脚本被加载到内存中并编译为Zend操作码
下面说一行:
解释器部分分析输入代码,将其翻译,然后 执行它。
据我所知,代码已加载到内存中,然后进行词法分析,解析并编译为操作码。即使在关于引擎的大量文章之后,我也陷入了混乱。到底PHP代码是编译还是解释了?
答案 0 :(得分:1)
我认为“编译”和“解释”之间的区别在实践中没有计算机科学课程所暗示的那么清晰,“运行时环境”和“虚拟机”之间的区别也是如此。
答案实际上是两者都是:Zend Engine首先将您的PHP代码编译为称为“ opcodes”的中间表示形式。然后解释这些操作码以执行代码。
在某些方面,这类似于Java首先被编译为字节码,然后在Java虚拟机上执行的方式。但是,在Zend Engine中执行代码的“ VM”没有像真正的处理器那样定义,并且与PHP语言紧密相关。因此,它的行为更像是传统的口译员,但是却没有人会写这种语言。
答案 1 :(得分:0)
Zend Engine负责PHP中的以下任务:
高性能解析(包括语法检查),内存中编译和执行PHP脚本[..]