PHP


PHP (正體)

Free Web Hosting with Website Builder
PHP
面向对象、函数式
设计者
Rasmus Lerdorf
实作者
The PHP Group
最近释出日期 5.2.6/ 2008年5月6日
动态、弱型别
启发语言
PerlCJava
跨平台
PHP License
http://php.net/

PHPPHP:Pre Hypertext Preprocessor)是一种在电脑上执行的脚本语言,主要是用途在于处理动态网页,也包含了命令列执行接口(command line interface),或者产生图形使用者接口(GUI)程式。[1]

PHP 最早由 Rasmus Lerdorf 在1995年发明,现在PHP的标准由PHP Group和社群维护。PHP 以 PHP License 作为许可协议,也是自由软件基金会所认可的自由软件[2]

PHP 目前被广泛的应用,特别是在服务器端的网页程式开发。一般来说 PHP 大多执行在网页服务器上,透过执行PHP程式码来产生使用者浏览的网页。PHP 几乎可以在任何的操作系统上执行,而且使用 PHP 完全是免费的[3]。根据2007年4月的统计资料,PHP 已经被安装在超过2000万个网站和100万台服务器上[4]。目前最新的 PHP 版本是2008年5月1日释出的 5.2.6[5]

目录

开发历史

PHP 的发明人 Rasmus Lerdorf

PHP 原本的简称为 Personal Home Page[6],是Rasmus Lerdorf 为了要维护个人网页而开发的一些CGI工具程式集,来取代掉原先部分的 Perl 程式。最初这些工具程式用来显示 Rasmus Lerdorf 的个人履历,以及统计网页流量[7]。他将这些程式和一些表单直译器整合起来,称为 PHP/FI。PHP/FI 可以和数据库连接,产生简单的动态网页程式。Rasmus Lerdorf 在1995年6月8日将 PHP/FI 公开释出,希望可以透过社群来加速程式开发与寻找错误[8]。这个释出的版本命名为 PHP 2,已经有今日 PHP 的一些雏型,像是类似 Perl 的变量命名方式、表单处理功能、以及嵌入到 HTML 中执行的能力。程式语法上也类似 Perl,有较多的限制,不过更简单、更有弹性。[7]

在1997年,任职于 Technion IIT 公司的两个以色列程式设计师:Zeev Suraski 和 Andi Gutmans,重写了 PHP 的剖析器,并且成为 PHP 3 的基础,而 PHP 也在这个时候改称为PHP: Hypertext Preprocessor.[7]。经过几个月测试,开发团队在1997年11月释出了 PHP/FI 2,随后就开始 PHP 3 的开放测试,最后在1998年6月正式释出 PHP 3。Zeev Suraski 和 Andi Gutmans 在 PHP 3 释出后开始改写 PHP 的核心,这个在1999年释出的剖析器称为 Zend Engine[9],他们也在以色列的 Ramat Gan 成立了 Zend Technologies 来管理 PHP 的开发。


应用

PHP主要应用在网页服务器,处理使用者的输入来产生网页。但是命令列脚本或是视窗程式接口(GUI)的开发也是PHP的主要应用范围。

服务器端脚本语言

PHP最初就是设计成服务器端脚本语言,因此这也是PHP应用最广的部份。在此领域有许多其他的竞争者,例如ASP.NETColdFusionJSPPerlRuby on Rails等等。

在网络工业领域,PHP是LAMP架构的其中一部分,所谓的LAMP是指Linux、Apache、MySQL、以及PHP所组成的网络环境,提供了许多安全、可靠的网页应用程式。PHP目前已经是全世界最受欢迎的服务器端脚本语言,跨平台的特性更是让PHP广为流传,目前世界上有超过2000万台服务器安装有PHP[10]

命令列脚本

PHP也可以用命令列上执行来使用,例如分析纪录档、系统管理工作等。这些工作过去都是由一些其他的脚本语言例如PerlPythonawk等来执行。

图形使用者接口(GUI)

透过和GUI函式库GTK+的结合,PHP也可以应用在图形使用者接口(GUI)的开发上,目前的应用还不普遍。

语法

PHP的语法参考了PerlC语言,而且可以整合在HTML之中,以下是一个简单的Hello World程式:

 <?php
    echo 'Hello World!';
 ?>

PHP剖析引擎只剖析<?php?>之间的程式码,而不包含在<?php?>之间的内容则会直接送出,所以可以用以下的方式来将PHP程式码嵌入在HTML之中:

 <?php
 //-PHP程式碼
 ?>
 html內容
 <?php
 //-PHP程式碼
 ?>

但是在判断语句中的HTML代码并不会被直接送出:

 <?php
 if (false) {
 ?>
 HTML Code
 <?php
 }
 ?>

PHP可以用三种注解的形式:C与C++所使用的“/*...*/”与“//”,和Perl的“#”。

类型

PHP主要有以下四种变量类型:

两种复合类型

两种特殊类型

  • NULL
  • 资源 (resource)[11]

变量

PHP中,变量以“$”后接变量名称来表示。变量名称区分大小写。有效的变量名称以字母或底线开头,后接任意数目的字母、数字或底线。[12]

面向对象

PHP从PHP 3开始有了基本的面向对象的特性,但直到PHP 5将面向对象部份重新改写之后,PHP的面向对象功能才比较完善。现在PHP可以说是一个有完整面向对象功能的语言。

PHP相关资源

函式库

主条目:PHP函式库列表

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

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

源代码编码和加速

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

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

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

样板引擎

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


未来发展

PHP 5.3

  • 名称空间(namespaces)原本预计在PHP 6提供支持,现在可能移到PHP 5.3就支持[13]

参考资料

  1. ^ Introduction.PHP Manual.于2006年11月15日查阅.
  2. ^ GPL-Incompatible, Free Software Licenses.Various Licenses and Comments about Them.Free Software Foundation.于2008年2月22日查阅.
  3. ^ 引用错误 无效的<ref>标签; 无文字提供于名为foundations的参照
  4. ^ Usage Stats for April 2007.于2008年7月7日查阅.
  5. ^ 引用错误 无效的<ref>标签; 无文字提供于名为php5changelog的参照
  6. ^ php.net/history
  7. ^ 7.0 7.1 7.2 History of PHP and related projects.The PHP Group.于2008年2月25日查阅.
  8. ^ Lerdorf, Rasmus (1995-06-08). "Announce: Personal Home Page Tools (PHP Tools)". comp.infosystems.www.authoring.cgi. (Web link). .于2006-09-17查阅。
  9. ^ Zend Engine version 2.0: Feature Overview and Design.Zend Technologies Ltd..于2006年9月17日查阅.
  10. ^ http://www.php.net/usage.php
  11. ^ Types Introduction,The PHP Group
  12. ^ Language variables,The PHP Group
  13. ^ Namespaces in action - Stubblog

外部链接

您可以在维基教科书中查找此百科条目的相关电子教程:






Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History