| PHP | |
|---|---|
| 编程范型: | 物件导向、函数式 |
| 设计者: | Rasmus Lerdorf |
| 实作者: | The PHP Group |
| 最近释出日期: | 5.2.6/ 2008年5月6日 |
| 型态系统: | 动态、弱型别 |
| 启发语言: | Perl、C、Java |
| 作业系统: | 跨平台 |
| 许可证: | PHP License |
| 网站: | PHP 官方站点 |
PHP(PHP:Hypertext Preprocessor)是一种电脑上的脚本语言,主要是设计成处理动态网页,用于服务器端脚本处理,不过也可以以命令列执行,或者产生独立的图形使用者接口程式。[1]
PHP最早由 Rasmus Lerdorf 在1995年发明,现在PHP的标准由PHP Group和社群维护。PHP 以 PHP License 作为许可协议,也是自由软件基金会所认可的自由软件。[2]
PHP多数被用于服务器端脚本语言,是在服务器上执行PHP程式码,输出网页让使用者浏览的方式。PHP可以在许多的平台上执行,而且都是免费的。PHP已经被安装在超过2千万个网站、1百万台服务器上,不过这个统计数字自从2005年8月后就没有更新过了[3]。目前最新的PHP版本是5.2.6,在2008年5月6日释出[4]。
目录 |
PHP 原本称呼为 "Personal Home Page",是程式设计师 Rasmus Lerdorf 在1994年为了取代维护自己个人网页的Perl程式而发展出来的。最早 PHP 是一些CGI程式的集合,主要用来显示 Rasmus Lerdorf 个人网页上的履历和统计网站流量[5]。不久之后 Rasmus Lerdorf 扩充了这些CGI程式,加入了许多功能,并且改称做 PHP/FI。PHP/FI主要以C语言构成,并且可以连接数据库,并且显示简单的动态网页。在1995年6月8日,Rasmus Lerdorf 公布了PHP/FI,希望透过社群来增强PHP/FI的功能,并且帮忙除错.[6]。公布后的版本被称作为PHP 2,已经有现今PHP的一些基本功能,像是Perl形式的变量(变量前加上$,例如:$variable)、表单处理、和嵌入于HTML的功能。语法上类似Perl,但是限制比较多,也比较简单、有弹性。[5]
1997年两个任职于Technion IIT公司的以色列程式设计师 Zeev Suraski 和 Andi Gutmans 改写了PHP的解析引擎,这个解析引擎成为了PHP 3的核心,PHP也改称做PHP: Hypertext Preprocessor[5]。
PHP的开发团队在1997年11月释出了PHP/FI 2,随后开始进行 PHP 3的测试,PHP 3也很快的于1998年6月发布。在1999年,Suraski 和 Gutmans 改写了整个PHP 3的核心,并称之为Zend引擎[7],并且在以色列成立了Zend Technologies公司来协助开发PHP。[5]
PHP主要应用在网页服务器,处理使用者的输入来产生网页。但是命令列脚本或是视窗程式接口(GUI)的开发也是PHP的主要应用范围。
PHP最初就是设计成服务器端脚本语言,因此这也是PHP应用最广的部份。在此领域有许多其他的竞争者,例如ASP.NET、ColdFusion、JSP、Perl、Ruby on Rails等等。
在网络工业领域,PHP是LAMP架构的其中一部分,所谓的LAMP是指Linux、Apache、MySQL、以及PHP所组成的网络环境,提供了许多安全、可靠的网页应用程式。PHP目前已经是全世界最受欢迎的服务器端脚本语言,跨平台的特性更是让PHP广为流传,目前世界上有超过2000万台服务器安装有PHP[8]。
PHP也可以用命令列上执行来使用,例如分析纪录档、系统管理工作等。这些工作过去都是由一些其他的脚本语言例如Perl、Python和awk等来执行。
透过和GUI函式库GTK+的结合,PHP也可以应用在图形使用者接口(GUI)的开发上,目前的应用还不普遍。
PHP的语法参考了Perl、C语言,而且可以整合在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主要有以下四种变量类型:
两种复合类型:
两种特殊类型
PHP中的变量用“$”后跟变量名表示。变量名是大小写敏感的。有效的变量名以字母或下划线打头,后跟任意数目的字母、数字或下划线。[10]
PHP从PHP 3开始有了基本的物件导向的特性,但直到PHP 5将物件导向部份重新改写之后,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简单。
PEAR是PHP Extension and Application Repository的缩写,由Stig S. Bakken于2000年在PHP开发者会议(PHP Developers' Meeting, PDM) 上提出,目的是实做可以重复使用的函式库来提供PHP社群使用。到今天PEAR已经包含很多类型的函式库,例如数据库连接、内容快取、数学计算、电子商务等等。
PECL是PHP Extension Community Library的缩写,目的是提供PHP社群各种延伸函式库。PECL在2003年从PEAR专案分离出来,现在已经是一个独立运作的专案。
即使PHP是广受欢迎的语言,但仍然受到很多的批评,例如:
PHP 6目前已经开始开发,将针对PHP 5的一些缺点做改进[13]:
PHP 6许多的功能尚未定案,仍然在讨论中,发布的日期也尚未确定。
|
查 • 论 • 编 • 历
|
|
|---|---|
| 文档呈现语言 | HTML* - XHTML* - XML* - XForms* - DHTML* |
| 样式格式描述语言 | CSS* - XSL* |
| 动态网页技术 | CGI - ASP - ASP.NET - ColdFusion - JSP - PHP - Ruby on Rails |
| 客户端交互技术 | ActiveX - Java Applet - Flash - Flex - AJAX - XMLHTTP* AIR- Silverlight - JavaFX |
| 客户端脚本语言 | JavaScript - JScript - VBScript - ECMAScript - ActionScript |
| 标识定位语言 | URL - URI - XPath |
| 文档纲要语言 | DTD* - XML Schema* |
| *由W3C制定和维护的标准与规范 | |
|
查 • 论 • 编 • 历
|
|
|---|---|
| 工业编程语言 | A+ - ActionScript - Ada - 汇编语言 - B - Brainfuck - COBOL - Curl - D - Eiffel - Erlang - FORTRAN - IronPython - Java - JavaScript - JScript - Jython - LISP - Lua - SCILAB - MATLAB - MATHEMATICA - Nuva - Oberon - OCaml - Perl - PHP - PostScript - Powerbuilder - Python - R - REXX - Ruby - Self - Smalltalk - Tcl/Tk - C# - F# - J# - Microsoft Visual C# |
| C/C++语言 | C - C++ - Turbo C++ - Borland C++ - C++ Builder- C++/CLI - Objective-C - Microsoft Visual C++ |
| BASIC语言 | BASIC - BASICA - GW-BASIC - QBASIC - QuickBASIC - True BASIC - Turbo BASIC - PowerBASIC - DarkBASIC -ETBASIC Visual Basic .NET - Visual Basic - VBScript - VBA |
| Pascal/Delphi语言 | Pascal语法:(Pascal - Turbo Pascal - Object Pascal - Free Pascal) Pascal+Delphi语法:(Delphi) |
| GPU用着色器语言 | Cg - GLSL - HLSL |
| 学术编程语言 | APL/J - Clean - Haskell - Logo - ML - Prolog - Scheme - SAC |
| 数据库相关编程语言 | Clipper - Visual FoxPro - SQL - SQL預存程序 |
| 其他编程语言 | ALGOL - Forth - Modula-2/Modula-3 - MUMPS - PL/I - Simula |
Why are we here?
All text is available under the terms of the GNU Free Documentation License
This page is cache of Wikipedia. History