PHP
PHP教程
PHP(PHP:Hypertext Preprocessor)是一种在计算机上运行的服务器脚本语言,主要是用途在于处理动态网页,也包含了命令行运行界面(command line interface),或者产生图形用户界面(GUI)程序。PHP 6是最新即将出的PHP版本。
PHP 的应用范围广泛,尤其是在网页程序的开发上。PHP 大多运行在网页服务器上,通过运行PHP代码来产生用户浏览的网页。PHP 可以在多数的服务器和操作系统上运行,而且使用 PHP 完全是免费的。根据2007年4月的统计数据,PHP 已经被安装在超过2000万个网站和100万台服务器上。
点击左侧菜单开始学习PHP教程,或选择你感兴趣的内容。
PHP版本开发历程
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,有较多的限制,不过更简单、更有弹性。
在1997年,任职于 Technion IIT 公司的两个以色列程序设计师:Zeev Suraski 和 Andi Gutmans,重写了 PHP 的解析器,成为 PHP 3 的基础,而 PHP 也在这个时候改称为PHP: Hypertext Preprocessor.。最后在1998年6月正式释出 PHP 3。他们在 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,一个访问数据库的延伸函数库)、以及许多效能上的增强。
2008年PHP 5成为了PHP唯一的有在开发的PHP版本。将来的PHP 5.3将会加入Late static binding和一些其他的功能强化。PHP 6 的开发也正在进行中,主要的改进有移除register_globals、magic quotes 和 Safe mode的功能。
| 主要版本 | 次要版本 | 释出日期 | PHP版本说明 |
|---|---|---|---|
| 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,延迟静态绑定, 跳转标签(有限的 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 版本 1.0.0 - 5.1.0 官方停止支持; 5.2.0 - 5.2.9 官方维护中;
PHP 版本 5.2.10 - 5.3.0 目前版本; 6.0.0 未来版本。
PHP应用
PHP 是一个应用范围很广的语言,特别是在网络程序开发方面。一般来说 PHP 大多在服务器端运行,通过运行 PHP 的代码来产生网页提供浏览器读取,此外也可以用来开发命令行脚本程序和用户端的GUI应用程序。PHP可以在许多的不同种的服务器、操作系统、平台上运行,也可以和许多数据库系统结合。使用 PHP 不需要任何费用,官方组织 PHP Group 提供了完整的程序源代码,允许用户修改、编译、扩充来使用。
PHP相关资源
PHP函数库
内置多样化的函数是PHP主要的特点之一,这些开放代码的函数提供了各种不同的功能,例如文件处理、FTP、字符串处理、等等。这些函数的使用方法和C语言相近(例如printf),这也是PHP广为流行的原因之一。
除了内置的函数之外,PHP也提供了很多延伸函数库(extension),像是各种数据库连接函数、数据压缩函数、图形处理等等。有些延伸函数库需要从PECL(PHP Extension Community Library)取得。
PHP源代码编码和加速
PHP源代码是可以直接读取的,即使放到服务器上运行也是一样。虽然让PHP多了弹性,但相对的会造成安全危机和性能下降的问题。
通过PHP编码器,可以保护PHP的源代码不被读取(对商业软件来说特别有需求),也可以提升运行的效能。有许多公司或团体开发PHP的编码器,将PHP程序编译成字节码(byte code),再通过服务器上安装对应的程序来运行PHP脚本。
除了通过编码器加速之外,PHP还可以通过动态的高速缓存机制来提升速度,加速工具有商业版的,例如Zend Platform,也有开放源代码的加速软件如eAccelerator、APC、XCache。
PHP常见的模板引擎
模板引擎让PHP应用程序可以做逻辑和使用界面上的分离,让程序开发更容易进行,目前比较受欢迎的模板引擎是PHP官方开发的Smarty。不过模板引擎有效能上的争议,因为PHP本身就是一个模板引擎,使用模板引擎反而变成“重新发明了轮子”(reinventing the wheel)。模板引擎最主要的好处就是让不懂PHP代码的人也可以参与使用界面的开发,因为模板引擎的语言远比PHP简单。
PHP数据库
PHP 在数据库方面的丰富支持,也是它迅速走红的原因之一,它支持下列的数据库或是数据文件:
- Adabas D
- DBA
- dBase
- dbm
- filePro
- Informix
- InterBase
- mSQL
- Microsoft SQL Server
- MySQL
- Solid
- Sybase
- ODBC
- Oracle 8
- Oracle
- PostgreSQL
而在 Internet 上它也支持了相当多的通讯协议 (protocol),包括了与电子邮件相关的 IMAP, POP3;网管系统 SNMP;网络新闻 NNTP;帐号共用 NIS;全球信息网 HTTP 及 Apache 服务器;目录协议 LDAP 以及其它网络的相关函数。
除此之外,用 PHP 写出来的 Web 后端 CGI 程序,可以很轻易的移植到不同的操作系统上。例如,先以 Linux 架的网站,在系统负荷过高时,可以快速地将整个系统移到 SUN 工作站上,不用重新编译 CGI 程序。面对快速发展的 Internet,这是长期规划的最好选择。
PHP发展
- 支持Unicode。
- 移除ereg扩展, 'register_globals', 'magic_quotes' 和 'safe_mode'; Alternative PHP Cache;Removal of mime_magic and rewrite of fileinfo() for better MIME support
- 其它改进。