更新时间:2024-04-29 23:16
PHP5是一款超文本预处理器。
PHP是“PHP:Hypertext Preprocessor”的缩写,即“超文本预处理器”。PHP是一种功能强大,并且简便易用的脚本语言。
PHP是一种简单、轻便的服务器端脚本语言。PHP最初是作为一个快速、实用的工具包出现的。1994年,为了在自己的网站上增加一个小巧而实用的访客追踪系统,Rasmus Lerdorf编写了PHP的雏形程序。这是一个用Perl封装的简单工具。由于使用效果并不理想,Rasmus又用C语言重写了这个工具。
后来,更多的人注意到这个轻巧而简便的程序,并且要求增加更多的功能。Rasmus决定发布一个完整的版本,将其命名为Personal Home Page Tools。后来,Rasmus又发布了一个名为FI的可以做SQL查询的工具。
1996年Rasmus发布了PHP/FI2.0,这是一个基本完善的PHP程序包。它不仅可以访问数据库,而且可以嵌入HTML页面。此时,PHP/FI2.0以及吸引了大量的程序开发人员。在众多程序员之中,也包括了Zeev Suraski和Andi Gutmans,他们就是后来PHP3的始作者。由于不满足于PHP/FI在大型项目中的表现,Zeev和Andi作了重大的改进。
1998年末,PHP3的第一个官方正式版本发行,其特色是具有更好的执行效果以及更清晰的结构。除此之外,PHP3的强大的功能还在于它的可扩展性。除了给最终用户提供数据库、协议和API的基础结构,它的可扩展性吸引了大量的开发人员加入并提交新的模块。
这个全新的语言伴随着一个新的名称发布。这个名称更具广泛意义,而不仅局限于“个人主页工具”的概念。它被命名为简单的缩写“PHP”。这是一种递归的缩写,它的全称是——PHP:Hypertext Preprocessor。
不久,Zeev Suraski和Andi Gutmans投入到了全新的PHP的开发之中。设计目标是增强程序运行性能和PHP自身代码的模块性。
新的PHP核心被成为“Zend”(以Zeev和Andi的名字命名)引擎,于2000年5月随着新版PHP4.0发布。PHP4的性能较PHP3有着显著的提高。相同的脚本在PHP4中运行,最高可以有近10倍的性能提升。并且Zend提供了的脚本优化器,可以把源程序转为二进制编译代码,提高性能的同时,也保护了程序源码不被暴露。
在PHP4中增加了对各种Web服务器(如Apache、IIS/PWS及OmniHTTPd等)的支持。此外,PHP4还增加了一些新的语言特性,如丰富的数组操作函数、完整的会话机制、对输出缓存的支持等。PHP4也对一些跨平台的技术提供了扩展支持,如对Adobe PDF、SWF、Java、Microsoft . NET等技术的支持。
PHP4还增加了对类与对象的支持。尽管PHP4在这方面并不完善,但还是大大改善了对面向对象程序设计的支持。PHP4中的Pear库(PHP Extension and Application Repository)就是面向对象的应用与实践的最好例证。
尽管PHP4的发展是如此迅猛,但较之于其他流行的开发语言还是缺乏一些关键的功能特性,比如,PHP4中的面向对象功能并不完善,也无法实现异常(Exception)的捕捉与处理。因此在一些特殊问题的处理上还是捉襟见肘的。
2004年7月,PHP5正式版本的发布,标志着一个全新的PHP时代的到来。它的核心是第二代Zend引擎,并引入了对全新的PECL模块的支持。PHP5的最大特点是引入了面向对象的全部机制,并且保留了向下的兼容性。程序员不必再编写缺乏功能性的类,并且能够以多种方法实现类的保护。另外,在对象的集成等方面也不再存在问题。使用PHP5引进了类型提示和异常处理机制,能更有效的处理和避免错误的发生。
在不断更新的同时,PHP5依然保留对旧有的PHP4程序可以运行于PHP5的平台上而不会出现较大问题。随着MySQL数据库的发展,PHP5还绑定了新的MySQLi扩展模块,它提供了一些更加有效的方法和实用工具用于处理数据库操作。这些方法大都以面向对象的方式实现,同时也极大地提高了基于数据库的Web项目的执行速度。
另外,PHP5中还改进了创建动态图片的功能,能够支持多种图片格式(如PNG、GIF、TTIF、JPGE等)。PHP5以及内置了对GD2库的支持,因此安装GD2库(主要指UNIX系统中)也不再是件难事,这使得处理图像十分简单和高效。
大多数Web程序开发者依然将XML作为一个彻底的简单数据库使用。PHP5中也采用了一系列简单易用、功能强大的方法处理XML文档。
今天,已经有包括雅虎和亚马逊等在内的数百万网站,以及众多的开发人员和编程爱好者正在使用PHP。从最初的PHP/FI到PHP5,PHP的发展是及其迅猛的,其未来的发展前景也必定令人瞩目。
PHP5发布3年后,PHP4仍然在为各大虚拟主机提供服务,大量主机hosting上还是永远的php4。之所以造成这种情况,有着多方面的原因。
2007年7月5日,一个PHP开发者联盟宣布,作为共同使PHP开发者社区完全迁移到PHP的5版本的努力的一部分,一些主要的开源PHP项目从2008年2月5日起在他们即将发布的软件中将放弃支持PHP旧的版本。
作为配合努力的一部分,Symfony, Typo3,phpMyAdmin,Drupal,Propel, 和Doctrine这些项目已经都宣布2008年2月5日以后他们的下一个版本将需要PHP5.2,而且已经向其它PHP项目和应用发出了公开邀请,包括开源的和非开源的,希望他们参与到这项努力中来。
许多基于PHP的网站应用现在既有运行PHP4的,也有运行PHP5的。PHP4在2000年发布,并且迅速巩固了作为统治性的网络开发语言的地位。PHP5发布于2004年,它在功能上有显著的改进,但是主要由于许多新平台发布伴随着“鸡和蛋”的问题,它发展很慢。首先PHP开发者还没摸透在没有php4的情况下,用php5来跑从前的应用会不会有潜在的问题。大量主机上仍然安装的是php4,这会使用户避免选择php5 only的web应用程序。也是因为这个原因,大量主机商还不能马上升级到php5,因为他们不知道用户将要跑php4或是php5的web应用。这样一来,php的开发者越发不能摆脱php4,他们为了适应环境,写出来的代码可能都是php4/php5兼容的。
这对php开发者来说,是如同梦魇一般的一个死循环。一些open source的php开发团体为了摆脱这个困境,终于决定做出一些动作来打破僵局了。他们在2008年2月份以后发布程序将仅仅官方的支持php 5.2.0以后的版本(官方的支持意味着某些程序还是能保持php4的兼容性的,但是不承诺)。这个活动被称之为GoPHP5。这些php开发团体已知的名单如下:
自从推办goPHP5,已经有超过 100 个软件开发项目和超过 200 个网络主机支援 PHP 5.2。相对从前,现在可以轻松地找到托管解决方案,软件开发商亦可以使用 PHP 5 具吸引力的新功能,而不需要担心他们的用户别无选项。
对于用户来说,使用php4或者php5无关紧要,他需要的仅仅是他的程序可以run。那么列表中拥有大量用户基础的php程序的转向,将会是驱动主机商升级到php5的极大动力。
字符串与数组处理
字符串和数组是所有计算机编程语言中最基本的数据结构。在各种语言中,对这两种数据结构的支持是完善的,PHP也是如此。作为一种面向Web开发的程序语言,PHP也有着自己的独特性。
PHP有着简单易用和功能强大的特点,这完全要归功于其开放的模块化设计。在基于Zend引擎的支持和优化下,各种各样的扩展模块,其功能已经覆盖几乎所有的Web应用。
URL的处理
利用URL函数库,PHP可以用简单的方法对URL地址进行解码或编码。而在此之前,需要编写一组代码加以实现。
正则表达式是一种强大的字符串分析工具。正则表达式早期仅用于UNIX系统程序,现在已经被绝大多数系统,程序所支持。随着正则表达式移植到交叉平台的程序语言的发展,其功能也日益完善。
单词拼写的处理
利用单词拼写检查库PSpell,PHP可以像Word中的“单词拼写检查”一样,对文本中的错误拼写进行指正。尽管这不常用,但对于某些场合(如辅助编辑进行校勘),这种处理是非常有益的。
数据的串行化
使用serialize()及unserialize()等函数,可以将数组、对象等数据进行序列化编码,从而方便其在数据库或会话周期中的存储。另外,利用WDDX(分布式数据格式)串行化数据,可以在应用环境中交换更为复杂的数据结构。
对不同类型文件的支持
PHP不仅仅局限于HTML和文本文件的处理,也可以符合特定格式的文件进行快速处理。例如对于CVS(逗号分隔文件)、INI(Windows配置文件)以及XML文件,PHP中都有专用的解析函数。除了上述文本文件,PHP还提供可以读取 ZIP文件的zlib压缩文件库。
PHP能够非常简便的输出文本,如XHTML以及任何其他形式的XML文件。PHP还能动态的输出图像(GD2库)、PDF文件(PDFLib库)甚至Flash动画(LibSWF和Ming库)。在Windows系统中,PHP能够在服务器端开辟出一块动态的缓存空间,从而直接打印这些文件(使用Printer扩展)。
简便的数据库操作
PHP最显著的特征之一,是它支持很大范围的数据库系统。用户会发现,利用PHP编写基于数据库支持的动态网页简单得难以置信。目前,PHP支持如表1-1所示的数据库系统。
表1-1 PHP支持的数据库系统
Adabas D dBase Empress
FilePro(只读) Hyperwave IBM DB2
Informix Ingres InterBase
FrontBase MSQL Direct MS-SQL
MySQL ODBC Oracle
Ovrimos PostgreSQL SQLite
Solid Sybase Velocis
UXIX dbm
目录与文件的操作
文件系统是操作系统的主要组成部分,是数据存储的基本单元。利用目录和文件函数,PHP可以对本地文件系统进行直接操作,如对文件或目录进行的创建、删除和读取操作,也可以对其所有者权限、组别等信息进行查询和变更操作。
当激活了phpini文件中的“allow_url_fopen”选项后,利用简单的 fopen()或fwrite()等函数就可以对远程文件进行操作。例如:程序可以读取或下载远程Web服务器的文件;对于具有适当权限的用户,还可以登录远程FTP服务器进行数据的保存或下载操作,甚至可以使用syslog()函数进行分布式日志的管理和维护。
通常,用户在编程过程中还会涉及到各种不同接口之间的通信问题,如打开文件并读取,或者建立一个套接字(Socket)连接发送数据。这些过程都是基于各种通信协议完成的。所谓通信协议,实际就是系统间发送和接受数据时所遵循的特定方法。
PHP支持诸如FTP、LDAP、IMAP、NNTP、POP3、HTTP、 COM(Windows环境)等大量的通信协议。PHP还可以开放原始网络端口,使得任何其他的协议能够协同工作。PHP支持和所有Web开发语言之间的 WDDX复杂数据交换。目前,PHP已经支持了对Java对象的使用,并且可以将它们自由的用作PHP对象。
PHP作为最成熟的开源体系LAMP(Linux,Apache,MySQL,PHP)的重要一员,以其简单性、开放性、低成本、安全性和适用性,受到越来越多的Web程序员的欢迎和喜爱。
PHP中提供了作为编码语言所有的基本功能。此外,它还提供许多实用的功能,使得PHP比其他编程语言更适合动态网页的开发。针对企业级Web应用,PHP也不断地完善和增加新的功能。
PHP是源码开放的,这意味着其代码的核心部分可以被免费使用。所有源码、文档可以在PHP官方网站上获得。用户可以自由复制、编译、分发其拷贝。任何一个用PHP编写的程序都属于用户自己,并且可以自行处理。
正式由于这种开源精神,才使PHP社区可以聚集众多的爱好者,也使得PHP有如此迅猛的发展。PHP的更新速度,以及发现和修正错误的速度是非常迅速的。可以看到,几乎每周都有一个新版本的PHP程序包发布。
目前,PHP的官方维护者和推动者Zend公司已经加快了PHP企业级应用的步伐。随着PHP5的应用不断扩大,Zend公司还将推出一个标准的PHP开发框架Zend Framework。通过这一框架,PHP开发者可以快速地构建Web应用。
PHP还具有优秀的平台兼容性。PHP源于UNIX系统平台,尤其是PHP、MySQL、 Apache和Linux组合,备受PHP爱好者的欢迎。不仅如此,PHP在Windows系列操作系统上也有出色的表现。其良好的程序界面、语言易用性等特点吸引了微软的开发人员。目前,有消息称未来的Windows . NET开发环境将集成PHP,这也意味着PHP的用户群将日益壮大。
如同ASP具有Windows自己的开发平台一样,Zend也为PHP设计了全新的开发环境 Zend Studio。这是一款集程序调试、系统发布以及开发环境为一体的PHP开发软件。这将大大简化PHP开发过程,并且缩短相应的测试周期。另外,Zend 还将与IBM公司合作推出集成Zend IDE特性的Eclipse软件供大家使用。
PHP是广泛及通用的脚本语言,它尤其适合于Web开发。PHP是世界上主要的网络开发语言之一,运行在世界三分之一的服务器上。它是从雅虎到Facebook等公司的平台选择,也是共享主机上最广泛的开发平台,为世界上数百万的网站提供动力。
随着PHP5版本性能的提升,以及面向对象功能的完善,PHP也逐渐开始于面向企业级应用。PHP的发展前景将无限广阔。
现在php5的最新版本为php5.4.3,较php5.3增强了安全特性,去掉了一些威胁安全的函数如global_register等,去掉了安全模式。