Categories: PHP编程

PHP是编译型还是解释型?

基本上PHP被解释,但是PHP被编译成中间字节码,然后由运行时Zend引擎解释。

PHP编译器的工作是解析PHP代码并将其转换为适合运行时引擎的形式。其任务包括:

  • 忽略评论
  • 解析变量、函数名等并创建符号表
  • 构造程序的抽象语法树
  • 编译成字节码
    根据您的PHP设置,此步骤通常只执行一次,即脚本第一次被调用时。编译器输出被缓存以加快后续使用的访问速度。但是,如果修改了脚本,则再次执行编译步骤。

PHP解释器:

  • 逐行遍历字节码并执行它
  • 处理运行时异常

运行时引擎在调用脚本时遍历AST和字节码。符号表用于存储变量的值并为函数提供字节码地址。

编译后的代码可以由计算机的CPU直接执行。也就是说,可执行代码是用CPU的本机语言指定的

解释语言的代码必须在运行时从任何格式转换成CPU机器指令。这个翻译是由翻译人员完成的。

不能说一种语言是被解释或编译的,因为解释和编译都是该特定语言实现的属性,而不是该语言本身的属性。因此,任何语言都可以被编译或解释——这只是取决于您使用的特定实现的功能。

最广泛使用的PHP实现由Zend引擎提供支持,简称PHP。Zend引擎将PHP源代码编译成它可以执行的格式,因此Zend引擎充当解释器。

这种编译成字节码并在运行时解释它的过程对于在某种虚拟运行时机器(包括Perl、Java、Ruby、Smalltalk等)上运行的语言来说是很典型的。

5.0
02
PHP代码是如何执行的
如何调试和分析PHP OPcache问题
嘻嘻

嘻嘻IT: 笔者是一个工作七八年的程序猿老鸟,从事涉及的技术栈主要包括PHP、Linux、Devops等,喜欢研究新技术,尝试新技术,提升技术自动化和开发效率,致力于write less,do more! 技术每年都会层出不穷,领域划分的越来越细,不可能学习所有的东西,保持对技术的好奇心,理解技术中核心思想,做一个有深度,有思想的开发!

Recent Posts

Seodity:提升SEO分析和内容创建

Seodity作为SEO分析的…

10小时 ago

SocialBee一款AI社交媒体内容生成器

SocialBee的AI帖子生…

10小时 ago

雪橇云VPN五一活动来了!全场15%的折扣!

雪橇云VPN一款是稳定全球多节…

11小时 ago

Autojump一个linux目录快速跳转的命令工具

Linux命令行实用程序有一个…

2天 ago

Groq一款语言处理的超快AI解决方案

Groq正在AI创新的最前沿,…

2天 ago