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. C - Thief in a Shop - dp完全背包-FFT生成函数

    C - Thief in a Shop 思路 :严格的控制好k的这个数量,这就是个裸完全背包问题.(复杂度最极端会到1e9) 他们随意原来随意组合的方案,与他们都减去 最小的 一个 a[ i ] 组合 ...

  2. ZOJ 3876 JAVA

    题意: 输入年份,求五一假期一共放多少天假.五一假期默认5天,如果5月1号星期一,那么它之前有星期六星期天两天假期, 假期总长度就变成5+2,五一假期结束第二天也需要判断是不是假期. 思路: 使用Ja ...

  3. 基本排序算法(Java)

    基本排序算法 (Java) 经过几次笔试,发现自己的Java基础有些薄弱,基本的排序算法掌握的还不够熟练,需要多加学习总结. 1. 选择排序 思想: 给定一个整数数组,例 int[] a ={38,6 ...

  4. LOJ.6435.[PKUSC2018]星际穿越(倍增)

    LOJ BZOJ 参考这儿qwq. 首先询问都是求,向左走的最短路. \(f[i][j]\)表示从\(i\)走到\(j\)最少需要多少步.表示这样只会\(O(n^2\log n)\)的= =但是感觉能 ...

  5. CentOS,crontab的学习、使用、问题解决记录

    参考:http://blog.csdn.net/luanwpp/article/details/7490871 参考: http://mp.weixin.qq.com/s?src=11&tim ...

  6. Gedit —— 推荐于NOI系列考试(NOIlinux)的轻量编程环境

    由于Vim,Emacs上手艰难,Guide又特别难用,Anjuta还闪退 故推荐一款轻量化的编程环境:Gedit(文本编辑器) 配置方法: 1:在桌面上新建main.cpp,打开方式选择使用gedit ...

  7. Tips_钉钉免登前端实现

    1.需求:开发钉钉微应用,需要实现钉钉的免登陆功能. #.其实钉钉的文档中心还是很详细的,只是刚开始接触会一头雾水,所以花费了挺多时间....... ?什么是钉钉免登功能. ?企业应用免登开发授权流程 ...

  8. Hadoop集群搭建过程中ssh免密码登录(二)

    一.为什么设置ssh免密码登录 在集群中,Hadoop控制脚本依赖SSH来执行针对整个集群的操作.例如,某个脚本能够终止并重启集群中的所有守护进程.所以,需要安装SSH,但是,SSH远程登陆的时候,需 ...

  9. 对scanf和printf的研究!!

    在做项目的时候,突然很纠结要不要清理.所以赶紧写一篇博客记一下!! 1. scanf函数 在代码中,如果碰到了两个挨着输入的情况,就会出现问题!! 输入一个字符 r 就会出现一下情况!! 第2句sca ...

  10. Windows获取进程完整路径

    #include <stdio.h> #include <locale.h> #include <windows.h> #include <tlhelp32. ...