Pos*_*Guy -6 php programming-languages
我知道PHP 5有一些面向对象的相似之处,但它还不是真正的OOP环境吗?它还有一个真正的编译器吗?我看到编译脚本仍然意味着程序性.我认为它不是真正的编译器,因为那里的任何PHP编译器都不会创建程序集?
我想你应该读一下你正在使用的词的定义!
"程序集"是.NET使用的一个词,它被松散地翻译为"一个DLL加上你可以部署的一些支持." 也许你在考虑"汇编代码"?
编译器编译为各种表示形式.JVM字节码,CLR字节码,x86字节码,Python字节码,MIPS字节码,ARM字节码,......这些都是编译器的有效目标.请注意,对于JVM和x86字节码,存在硬件(CPU)和软件(解释器)执行环境,因此目标代码是否为"硬件"并不真正发挥作用.
编写代码与解释代码并不意味着任何涉及OO与程序与功能的关系.OO与支持多态性,数据隐藏,数据接口实现和可组合性有关.
PHP支持所有这些,因此您可以使用它以直接的方式实现OO设计,所以我会说PHP支持OO.
最后:你应该看看Facebook PHP编译器,它将PHP编译为C,然后编译为C到x86,与传统的PHP执行环境相比,这显然使其速度提高了50%.
PHP现在是一种完全面向对象的语言,即使大部分API都不是.
因此它是一种完全面向对象的语言.
PHP实际上编译(默认情况下在每次运行时除非使用"加速器")将其脚本编译为中间字节代码,然后由Zend Engine运行.
它实际上非常接近其他语言:
VB.NET/C#/ F#/其他.NET语言
编译时这些语言不会在汇编代码中输出二进制文件,而是在通用中间语言(CIL)中输出二进制文件.然后,.NET虚拟机在运行时解释CIL字节码.
Java
Java编译.class和.jar文件不是汇编代码,而是Java Bytecode.然后,Java虚拟机在运行时解释Java字节码
PHP
PHP编译成Zend Bytecode,然后由Zend Engine在运行时解释.