本章使你能够更好地掌握PHP基础,对PHP的起源、普及性及用户有深入的了解。这些信息为讨论PHP的特性(包括PHP 5的新特性)奠定了基础。通过本章你将了解到:
● 一个由加拿大开发人员开发的网页访问计数器如何造就了世界上最流行的脚本语言之一。
● PHP的开发人员怎样一次次地改进这种语言,最终发布了迄今为止最佳的版本——PHP 5。
● PHP的哪些特性让程序员新手和专家趋之若鹜。
1.1 历史
最初的PHP要追溯到1995年,当时一个名叫Rasmus Lerdorf的独立软件开发承包人开发了一个Perl/CGI脚本,可以让他了解有多少访问者阅读了他的在线简历。他的脚本执行两项任务:将访问者信息记入日志,显示网页访问者的数量。Web虽然现在已经家喻户晓,但在当时却很年轻,所以类似的工具以前从未有过,于是人们向Lerdorf发送电子邮件咨询他的这个脚本。自此Lerdorf开始分发他的工具集,并称之为个人主页(PHP)。
由于对PHP工具集的呼声很高,这促使Lerdorf继续开发这种语言。他增加了一个能把在HTML表单中输入的数据转换为符号变量的功能,从而允许导出到其他系统,这或许算得上是早期最突出的一次改进。为此,他选择用C而不是Perl代码来进行后续的开发。对PHP工具集的不断增补在1997年11月达到了顶峰,这时发行了PHP 2.0,即“个人主页——表单解释器”(PHP-FI)。由于PHP不断普及,所以2.0版本得到了来自全世界程序员的大量改进和提高。
这个新PHP版本非常流行,很快就有一个核心开发团队加入到Lerdorf。他们保持了原先在HTML中直接加入代码的概念,重新编写了解析引擎,这就诞生了PHP 3.0。到1998年6月发行版本3.0为止,已经有超过5万个用户在使用PHP改进其网页。
注解 1997年还出现了一个变化,PHP的含义由Personal Home Page(个人主页)变成了Hypertext Preprocessor(超文本预处理器)的缩写词。
接下来的两年中,开发继续狂热地进行着,又增加了成百上千项功能,用户数量也在飞速增长。在1999年初,Netcraft(http://www.netcraft.com/)公布了一个保守的估计,称用户数已经超过了100万,这说明PHP已经成为了世界上最流行的脚本语言之一。它的广泛流传甚至超出了开发人员最乐观的期望,并且很快用户们准备用PHP开发功能更强大的应用程序。两位核心开发人员(Zeev Suraski和Andi Gutmans)开始主动地彻底重新考虑PHP的工作方式,最终改写了PHP的解析器,称之为Zend脚本引擎。这些工作的最终成果就是PHP 4的发布。
注解 Zend技术有限公司(http://www.zend.com/)位于以色列,它除了领导开发Zend引擎和指导PHP语言的整体开发外,还提供了一套开发和部署PHP的工具,包括Zend Studio、Zend Encoder和Zend Optimizer等。更多信息请访问Zend的网站。
1.1.1 PHP 4
2000年5月22日,第一次正式宣布再次开发之后的大约18个月,发布了PHP 4.0。许多人都认为PHP 4的发布是这种语言在企业级开发环境下的正式亮相,这个观点也由于PHP的迅速普及得到了佐证。仅仅在发布后的几个月内,Netcraft(http://www.netcraft.com/)估计就有超过360万个域安装了PHP。
1. 特性
PHP 4包括了以下几项企业级的改进:
● 改进了资源处理:可扩展性是版本3.X的主要缺点之一。这主要是因为设计者低估了这种语言,没考虑到它会大量用于大规模应用程序。最初并没有打算用这种语言开发企业级网站,但后来确实有这样的尝试,这就使得开发人员开始重新考虑这种语言的机制。最终促使在版本4中对资源处理进行了大幅改进。
● 面向对象的支持:版本4在一定程度上结合了面向对象的功能,尽管一般认为这只是一个很平常的实现。不过,对于使用传统面向对象程序设计(OOP)语言的用户来说,这个新特性在吸引这些用户方面起到了非常重要的作用。除了对象重载和运行时类信息,PHP还支持标准的类和对象开发方法。版本5支持更复杂的OOP实现,第5章将介绍这方面的内容。
● 内置的会话处理支持:版本3.X通过第三方包PHPLIB(http://phplib.sourceforge.net)来支持HTTP会话处理,在版本4中HTTP会话处理则是内置的功能。这个特性使得开发人员可以相当高效轻松地跟踪用户活动和偏好。第15章将介绍PHP的会话处理功能。
● 加密:MCrypt(http://mcrypt.sourceforge.net)库引入到默认发行包中,为用户提供了完全加密和散列加密,使用的加密算法包括Blowfish、MD5、SHA1和三重DES等。第18章将讨论PHP的加密功能。
● ISAPI支持:对ISAPI的支持使用户能够将PHP与微软的IIS Web服务器(作为一个ISAPI模块)结合使用,大大提高了性能和安全性。
● 内置COM/DCOM支持:对Windows用户来说,另一个好处是PHP 4能够访问和实例化COM对象。这项功能扩展了与Windows应用程序的互操作性。
● 内置Java支持:这也是PHP在互操作性方面的一大进步,版本4.0支持PHP应用程序绑定Java对象。
● 与Perl兼容的正则表达式(PCRE)库:Perl语言一直以来在字符串解析领域雄霸天下,占据着统治地位。开发人员知道,如果想让PHP得到广泛认可,强大的正则表达式功能会起到重要作用。他们的做法只是集成Perl的功能,而不是重新开发,并将PCRE库的包集成在PHP的默认发行包中(版本4.2.0)。第9章将详细介绍这个重要的特性,并介绍经常引起混淆的正则表达式语法。
除了这些特性外,版本4还添加了几百项功能,大大提升了这种语言的能力。本书中,我们将讨论其中大部分功能,因为这些功能在版本5中仍然很重要。
2. 缺点
在PHP语言的发展历程上,PHP 4代表着一次巨大的飞跃。这个新版本带来的新功能、强大能力和可扩展性对开发新手和老手都产生了不小的震动,这也使PHP在Web脚本领域确立了牢固的地位。但是,要想让用户对哪种语言矢志不渝是很困难的事情;程序员通常会有这样一种想法“你最近为我做了什么”。PHP开发团队牢记这一点,因为不久以后他们就开始着手开展另一个里程碑性的任务,要在Web脚本领域推出一个重量级语言(就像一个800磅的大猩猩):PHP 5。
1.1.2 PHP 5
版本5是PHP语言发展历程中的另一座分水岭。虽然前面的主要版本已经增加了许多库,版本5则在现有的功能上又进行了许多改进,并且增加了成熟的编程语言体系结构才有的一些特性:
● 极大地提高了面向对象能力:PHP的面向对象体系结构得到了改进,这是版本5最突出的特点。版本5增加了很多功能,如显式构造函数和析构函数、对象克隆、类抽象、变量作用域和接口等。另外,PHP在处理对象管理方面也有重大改进。第6章和第7章将详细介绍这些内容。
● try/catch异常处理:具有讽刺意味的是,在结构化编程语言中设计错误处理策略时,不仅非常容易出错,而且很难保持一致。为了解决这个问题,版本5开始支持异常处理。在许多语言中,如C++、C#、Python和Java等,异常处理长期以来一直都是错误管理方面的中流砥柱,它为建立标准化的错误报告逻辑提供了一种绝佳的方法。这种方便的新方法将在第8章中介绍。
● 改进的字符串处理:之前版本的PHP默认地将字符串看作数组,这也反映了PHP原先的数据类型观点不够严密。这种策略在版本5中有所调整,引入了一种专门的字符串偏移量(offset)语法,而以前的方法已经废弃不用。第9章将讨论这种新语法带来的新特性、变化和效果。
● 改进的XML和Web服务支持:现在的XML支持建立在libxml2库基础上,还引入一个很新但非常有前途的扩展包来解析和处理XML:SimpleXML。此外,PHP 5还支持SOAP扩展。第20章将介绍这两个新扩展,并介绍一些很棒的第三方Web服务扩展。
● 对SQLite的内置支持:开发人员的脚步一直没有停止,还为功能强大但很简洁的SQLite数据库服务器(http://www.sqlite.org/)提供了支持。如果开发人员需要一些重量级数据库产品中才有的特性,同时不希望带来相应的管理开销,SQLite就能为这些开发人员提供一个方便的解决方案。第22章将介绍PHP为这个强大的数据库引擎提供的支持。
版本5中还提供了其他的大量改进和增补,其中许多特性都将在本书的相应位置介绍。
随着版本5的发布,PHP的普及到达了历史最高点。至本书写作时,已经有将近1900万个域安装了PHP(Netcraft,http://www.netcraft.com/)。根据E-Soft公司(http://www.securityspace
.com/)的数据,PHP是迄今为止最流行的Apache模块,在所有Apache安装中大约有54%都安装了PHP。
到目前为止,本章只讨论了每个PHP版本特有的一些特性。各个版本还有一些共同的特点,它们在吸引和保住庞大的用户群方面起到了非常重要的作用。下一节我们将学习这些基本特性。







