Zend与PHP之间到底是什么关系
Zend与PHP之间是什么关系
What is Zend's relationship with PHP?
每次看到PHP虚拟机中出现zend、zendvar之类的都很困惑,特意查了一下...
PHP最开始是由 Rasmus Lerdorf在1994年发明,原名为Personal Home Page(PHP),最初底层由perl语言开发,后改为C语言开发,此时的PHP/IF即为用C语言开发的一些CGI工具程序集... 1995年6月8日Rasmus Lerdorf将PHP/FI的代码公开。任职于Technion IIT公司的两个以色列程式设计师:Zeev Suraski和Andi Gutmans,重写了PHP的解释器,成为PHP 3的基础,而PHP也在这个时候改称为Hypertext Preprocessor (PHP). 经过几个月测试,开发团队在1997年11月公布了PHP/FI 2,随后就开始PHP3的开放测试,最后在1998年6月正式发布PHP3。Zeev Suraski和Andi Gutmans在PHP 3发布后开始改写PHP的核心,在1999年发布的PHP解释器命名为Zend Engine,Zend来源于这两个人名字中的Zeev 和 Andi, 而他们也在以色列的Ramat Gan成立了以他们的名字命名的Zend Technologies公司来管理PHP的开发。 PHP4+以上版本,虚拟机(解释器) 从此被称为 Zend Engine 。
The Zend Engine is a virtual machine that takes assembly-style, three-address instruction code and executes it.
While there's a lot of Zend in PHP, and Rasmus, Andi and Zeev are all involved at various levels, Zend Technologies does not control the development process. Indeed, nobody really controls the development process. php-internals is working on that.
The reason you see Zend all over the place when writing C extensions is due to the Zend Engine.
最初: PHP/FI (PHP/Form Interpreter)
正如我们今天知道的那样,PHP起源于由Rasmus Lerdorf.用Perl开发的两个工具。PHP是 Personal Homepage Tool的简写,意为“个人主页工具”,而FI即Form Interpreter,意为表单解释器。 结合这两种工具形成的宏命令可用来发送SQL语句到数据库、处理表单和流控制。
这两个工具用C语言重写后组合成了PHP/FI 2.0 (PHP/Form Interpreter 2.0)。这个时期的PHP看上去和现在的语法不太一 样,但本质上没有太大的不同。它支持变量、关联数组和函数。当然,那时还没有对象。
语法糖: PHP 3
事实上,在PHP3的计划阶段,对象并不在安排之中。和今天的PHP一样,PHP3的主要架构 设计师也是Zeev Suraski和Andi Gutmans o PHP 3是由PHP/FI 2.0完全重写成的,但是对象并不是新 语法中必需的部分。
据Zeev Suraski回忆,PHP对类的支持实际上是后来才加上的(准确地说是1997年8月27日)。 那时的类和对象实际上是定义和存取关联数组的另一种方式。
当然,加入了方法和继承使得类比关联数组更加强大,但那时对于类的操作仍然存在很多局 限性,比如不能访问父类中被覆盖的方法(如果你不明白这里的意思也不用担心,我们将会在后 面解释)。另一个不足之处是对象在PHP脚本中被传递的方式并非最佳,我们马上就会讲到。
在这个时期对象只是个边缘话题,在官方文档中也没有提及这方面的内容。PHP手册只用了 一句话和一段代码示例来介绍对象,而且该示例没有介绍对象的继承和属性等。
PHP的发明人Rasmus Lerdorf
Zend Technologies的创办人之一 - Zeev Suraski
Zend Technologies的创办人之一 - Andi Gutmans
PHP原本的简称为Personal Home Page,是拉斯姆斯·勒多夫Rasmus Lerdorf 为了要维护个人网页,而用c语言开发的一些CGI工具程序集,来取代原先使用的Perl程序。最初这些工具程序用来显示拉斯姆斯·勒多夫的个人履历,以及统计网页流量。他将这些程序和一些表单直译器整合起来,称为 PHP/FI。 PHP/FI可以和资料库连接,产生简单的动态网页程序。拉斯姆斯·勒多夫在1995年6月8日将 PHP/FI公开公布,希望可以透过社群来加速程序开发与寻找错误。这个公布的版本命名为 PHP 2,已经有今日 PHP的一些雏型,像是类似Perl的变量命名方式、表单处理功能、以及嵌入到HTML中执行的能力。程序语法上也类似Perl,有较多的限制,不过更简单、更有弹性。
在1997年,任职于Technion IIT公司的两个以色列程序设计师:Zeev Suraski和Andi Gutmans,重写了 PHP的解释器,成为 PHP 3的基础,而 PHP也在这个时候改称为 PHP: Hypertext Preprocessor.。经过几个月测试,开发团队在1997年11月公布了 PHP/FI 2,随后就开始 PHP 3的开放测试,最后在1998年6月正式公布 PHP 3。Zeev Suraski和Andi Gutmans在 PHP 3公布后开始改写 PHP的核心,这个在1999年公布的剖析器称为Zend Engine,他们也在以色列的Ramat Gan成立了Zend Technologies来管理 PHP的开发。
在2000年5月22日,以Zend Engine 1.0为基础的 PHP 4正式公布,2004年7月13日则公布了 PHP 5, PHP 5则使用了第二代的Zend Engine。 PHP包含了许多新特色,像是强化的面向对象功能、引入PDO( PHP Data Objects,一个存取资料库的延伸函式库)、以及许多效能上的增强。目前 PHP 4已经不会继续更新,以鼓励用户转移到 PHP 5。
2008年 PHP 5成为了 PHP唯一维护中的稳定版本。最新的发布版本为 PHP 5.6.9。
PHP 6 的开发也正在进行中,主要的改进有移除register _ globals 、magic quotes 和 Safe mode 的功能。
PHP 7的于2015年12月3日开发完成,主要的改进有PHPNG、JIT引擎、抽象语法树编译、异步编程。