PHP的诞生与发展历程

简介

PHP(PHP:Hypertext Preprocessor)是一种在计算机上运行的脚本语言,主要是用途在于处理动态网页,也包含了命令行运行界面(Command Line Interface),或者产生图形用户界面(GUI)程序。

PHP 最早由 Rasmus Lerdorf 在1995年发明,而现在PHP的标准由PHP Group和开放源代码社群维护。PHP 以 PHP License 作为许可协议,不过因为这个协议限制了PHP名称的使用,所以和开放源代码许可协议GPL不兼容。

PHP 的应用范围相当广泛,尤其是在网页程序的开发上。一般来说 PHP 大多运行在网页服务器上,通过运行PHP代码来产生用户浏览的网页。PHP 可以在多数的服务器和操作系统上运行,而且使用 PHP 完全是免费的。根据2007年4月的统计数据,PHP 已经被安装在超过2000万个网站和100万台服务器上。

PHP是一个应用范围很广的语言,特别是在网络程序开发方面。一般来说 PHP 大多在服务器端运行,通过运行 PHP 的代码来产生网页提供浏览器读取,此外也可以用来开发命令行脚本程序和用户端的GUI应用程序。PHP可以在许多的不同种的服务器、操作系统、平台上运行,也可以和许多数据库系统结合。使用 PHP 不需要任何费用,官方组织 PHP Group 提供了完整的程序源代码,允许用户修改、编译、扩充来使用。

开发历史

PHP原本的简称为Personal Home Page,是Rasmus Lerdorf 为了要维护个人网页,而用C语言开发的一些CGI工具程序集,来取代原先使用的 Perl程序。最初这些工具程序用来显示Rasmus Lerdorf的个人履历,以及统计网页流量。他将这些程序和一些窗体解释器集成起来,称为 PHP/FI。PHP/FI 可以和数据库连接,产生简单的动态网页程序。Rasmus Lerdorf 在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版本。将来的PHP 5.3将会加入Late static binding和一些其他的功能强化。PHP 6 的开发也正在进行中,主要的改进有移除register_globals、magic quotes 和 Safe mode的功能。

版本历程

主要版本 次要版本 发布日期 说明
1.0 1.0.0 1995年6月8日 正式名称为"Personal Home Page Tools (PHP Tools)",第一次使用了"PHP"的名字。
2.0 2.0.0 1996年4月16日 针对PHP 1.0的改进版,速度更快、体积更小,更容易产生动态网页。
3.0 3.0.0 1998年6月6日 开发方式改成多人共同参与。Zeev Suraski和Andi Gutmans 为了这个版本重写了解析引擎。
4.0 4.0.0 2000年5月22日 改成以Zend引擎作为解析器,具有两阶段解析/标签解析系统等先进功能。
4.1.0 2001年12月10日 加入"超全局变量"(superglobals)功能,包含了$_GET、$_POST、 $_SESSION等 。
4.2.0 2002年4月22日 默认取消register_globals功能。从网络接收的数据将不会设置成全局变量,增加程序安全性。
4.3.0 2002年12月27日 加入命令行运行档,称为CLI。
4.4.0 2005年7月11日 Added man pages for phpize and php-config scripts.
4.4.8 2008年1月3日 Several security enhancements and bug fixes. Was to be the end of life release for PHP 4. Security updates only until 2008-08-08, if necessary.
4.4.9 2008年8月7日 More security enhancements and bug fixes. The last release of the PHP 4.4 series.
5.0 5.0.0 2004年7月13日 Zend Engine II with a new object model.
5.1.0 2005年11月24日 Performance improvements with introduction of compiler variables in re-engineered PHP Engine.
5.2.0 2006年11月2日 Enabled the filter extension by default.
5.2.8 2008年12月8日 emergent bug fix
5.2.9 2009年2月26日 解决了5.2.*的超过了50多个错误和多个安全问题,增加了稳定性。
5.2.10 2009年6月18日 这个版本修正了大量的bug和安全漏洞,并升级了时区数据库。
5.3.0 2009年6月30日 支持命名空间;使用XMLReader和XMLWriter增强XML支持; 支持SOAP ,[24] 延迟静态绑定, 跳转标签(有限的 goto), 闭包,Native PHP archives
6.0 6.0.0 支持Unicode; 移除ereg扩展, 'register_globals', 'magic_quotes' 和 'safe_mode'; Alternative PHP Cache;Removal of mime_magic and rewrite of fileinfo() for better MIME support

PHP相关资源

函数库

内置多样化的函数是PHP主要的特点之一,这些开放代码的函数提供了各种不同的功能,例如文件处理、FTP、字符串处理、等等。这些函数的使用方法和C语言相近(例如printf),这也是PHP广为流行的原因之一。

除了内置的函数之外,PHP也提供了很多延伸函数库(extension),像是各种数据库连接函数、数据压缩函数、图形处理等等。有些延伸函数库需要从PECL(PHP Extension Community Library)取得。

源代码编码和加速

PHP源代码是可以直接读取的,即使放到服务器上运行也是一样。虽然让PHP多了弹性,但相对的会造成安全危机和性能下降的问题。

通过PHP编码器,可以保护PHP的源代码不被读取(对商业软件来说特别有需求),也可以提升运行的效能。有许多公司或团体开发PHP的编码器,将PHP程序编译成字节码(byte code),再通过服务器上安装对应的程序来运行PHP脚本。

除了通过编码器加速之外,PHP还可以通过动态的高速缓存机制来提升速度,加速工具有商业版的,例如Zend Platform,也有开放源代码的加速软件如eAccelerator、APC、XCache。

模板引擎

模板引擎让PHP应用程序可以做逻辑和使用界面上的分离,让程序开发更容易进行,目前比较受欢迎的模板引擎是PHP官方开发的Smarty。不过模板引擎有效能上的争议,因为PHP本身就是一个模板引擎,使用模板引擎反而变成“重新发明了轮子”(reinventing the wheel)。模板引擎最主要的好处就是让不懂PHP代码的人也可以参与使用界面的开发,因为模板引擎的语言远比PHP简单。

发表评论

您必须登录才能发表评论!