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引擎、抽象语法树编译、异步编程。

Zend与PHP之间到底是什么关系的更多相关文章

  1. 屏幕尺寸,分辨率,像素,PPI之间到底什么关系?

    转载自:http://www.jianshu.com/p/c3387bcc4f6e 感谢博主的无私分享. 今天我给大家来讲讲这几个咱们经常打交道的词到底啥意思,以及他们之间到底有什么关系.这篇文章是我 ...

  2. 我的Android进阶之旅------>(全解析)屏幕尺寸,分辨率,像素,PPI之间到底什么关系?

    作者:马忠信,作者授权早读课发表,转载请联系作者. 原文链接:http://www.jianshu.com/p/c3387bcc4f6e#  互联网早读课:http://zaodula.com/arc ...

  3. (全解析)屏幕尺寸,分辨率,像素,PPI之间到底什么关系?

    (全解析)屏幕尺寸,分辨率,像素,PPI之间到底什么关系? 产品经理马忠信关注 22015.08.30 13:59:20字数 2,660阅读 52,661 今天我给大家来讲讲这几个咱们经常打交道的词到 ...

  4. SOA和微服务到底是什么关系

    本文原创,原文地址为:http://www.cnblogs.com/fengzheng/p/5847441.html SOA和微服务到底是什么关系? 说实话,我确实不明白SOA和微服务到底有什么本质上 ...

  5. SOA和微服务到底是什么关系?

    SOA和微服务到底是什么关系? 说实话,我确实不明白SOA和微服务到底有什么本质上的区别,两者说到底都是对外提供接口的一种架构设计方式.我倒觉得微服务其实就是随着互联网的发展,复杂的平台.业务的出现, ...

  6. JS原型的问题Object和Function到底是什么关系

    var F = function(){}; Objcert.prototype.a = function(){}; Function.prototype.b = function(){}; F 既能访 ...

  7. UML类图画法及其之间的几种关系(转)

    UML类图画法及其之间的几种关系 最近做重构项目,需要画一下类图,发现类图的画法及其之间的几种关系已经淡忘了很多,所以整理总结一下,有问题的地方大家可以一起讨论下. 文章目录如下: 类图画法 类之间的 ...

  8. Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->使用spring framework的IoC容器功能----->方法一:使用XML文件定义beans之间的依赖注入关系

    XML-based configuration metadata(使用XML文件定义beans之间的依赖注入关系) 第一部分 编程思路概述 step1,在XML文件中定义各个bean之间的依赖关系. ...

  9. UML类图画法及其之间的几种关系

    最近做重构项目,需要画一下类图,发现类图的画法及其之间的几种关系已经淡忘了很多,所以整理总结一下,有问题的地方大家可以一起讨论下. 文章目录如下: 类图画法 类之间的几种关系:泛化(Generaliz ...

随机推荐

  1. Oracle表导入Mysql方法

    public void reportPerInfo(){ //每次导入清除之前数据 this.esEntPermitErrDao.updateObjectBySql("delete from ...

  2. Weblogic记录

    有些坑还是要去踩,上来就docker一脸懵逼. 1.应用 https://www.cnblogs.com/xdp-gacl/p/4140683.html (1)安装 环境: 64位server2016 ...

  3. HBASE强制删除表

    1,先把hdfs的对应表的数据删除 hadoop fs -mv /hbase/<table_name> /tmp 2,修复meta信息 hbase hbck -fixMeta -fixAs ...

  4. Numpy 基础运算1

    # -*- encoding:utf-8 -*- # Copyright (c) 2015 Shiye Inc. # All rights reserved. # # Author: ldq < ...

  5. LeetCode 31 Next Permutation / 60 Permutation Sequence [Permutation]

    LeetCode 31 Next Permutation / 60 Permutation Sequence [Permutation] <c++> LeetCode 31 Next Pe ...

  6. Jmeter之Non HTTP response code: java.net.SocketException/Non HTTP response message: Permission denied: connect

    最近在做性能测试过程中遇到了高并发时,后台监控各项指标都很正常,但是测试结果中很多Non HTTP response code: java.net.SocketException/Non HTTP r ...

  7. linux操作命令之搜索命令

    1.文件搜索命令:locate 文件名 在后台数据库中按照文件名搜索,搜素速度更快 /var/lib/mlocate:#locate命令所搜索的后台数据库 updatedb:更新数据库 updated ...

  8. 将字符串XX,SS以“,”符号进行区分并分别存储在数组中

    public static void main(String[] args) { String str = "EAN_13,1534651"; String strs[] = st ...

  9. 配置 RIPv1 和 RIPv2

    拓扑图 场景您是公司的网络管理员.您所管理的小型网络中包含三台路由器,并规划了五个网络.您需要在网络中配置RIP路由协议来实现路由信息的相互传输.最初使用的是RIPv1,后来发现RIPv2更有优势,于 ...

  10. [WEB]绕过安全狗与360PHP一句话的编写

    00x01安全狗的确是让人很头痛,尤其是在上传一句话或者写入一句话的时候,会被安全狗拦截从而拿不下shell.当然,安全狗是最简单的一款waf,很容易就进行一个绕过.00x02对于绕过安全狗跟360, ...