贝勒是皇帝的什么人:PHP - 维基百科

来源:百度文库 编辑:偶看新闻 时间:2024/05/03 20:00:22

PHP - 维基百科
http://www.360doc.com/UserHome/720362

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

  PHP最早由Rasmus Lerdorf在1995年发明,而现在PHP的标准由PHP Group和开放源代码社区维护。PHP以PHP License作为许可协议,不过因为这个协议限制了PHP名称的使用,所以和开放源代码许可协议GPL不兼容。[2]

  PHP的应用范围相当广泛,尤其是在网页程序的开发上。一般来说PHP大多运行在网页服务器上,通过运行PHP代码来产生用户浏览的网页。PHP可以在多数的服务器和操作系统上运行,而且使用PHP完全是免费的。根据2007年4月的统计数据,PHP已经被安装在超过2000万个网站和100万台服务器上[3]

目录

[隐藏]
  • 1 开发历史
    • 1.1 版本历程
  • 2 应用
  • 3 安全
  • 4 语法
    • 4.1 类型
    • 4.2 变量
    • 4.3 面向对象
  • 5 PHP相关资源
    • 5.1 库
    • 5.2 源代码编码和加速
    • 5.3 模板引擎
  • 6 PHP 编译器
  • 7 未来发展
    • 7.1 PHP 6
  • 8 参考资料
  • 9 外部链接

[编辑] 开发历史

PHP的发明人Rasmus LerdorfZend Technologies的创办人之一 - Andi GutmansZend Technologies的创办人之一 - Zeev Suraski

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

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

  在2000年5月22日,以Zend Engine 1.0为基础的PHP 4正式释出,2004年7月13日则释出了PHP 5,PHP 5则使用了第二代的Zend Engine[5]。PHP包含了许多新特色,像是强化的面向对象功能、引入PDO(PHP Data Objects,一个访问数据库的延伸库)、以及许多效能上的增强[8]。目前PHP 4已经不会继续更新,以鼓励用户转移到PHP 5。[9][10]

  2008年PHP 5成为了PHP唯一维护中的稳定版本。将来的PHP 5.3将会加入Late static binding和一些其他的功能强化[11][12]

  PHP 6的开发也正在进行中,主要的改进有移除register_globals[13]magic quotesSafe mode的功能。[9][14]

[编辑] 版本历程

代表意义 红色 旧版;官方停止支持 黄色 旧版;官方维护中 绿色 当前版本 蓝色 未来版本 主要版本 次要版本 释出日期 说明 1.0 1.0.0 1995年6月8日 正式名称为"Personal Home Page Tools (PHP Tools)",第一次使用了"PHP"的名字。[5] 2.0 2.0.0 1996年4月16日 针对PHP 1.0的改进版,速度更快、体积更小,更容易产生动态网页。[5] 3.0 3.0.0 1998年6月6日 开发方式改成多人共同参与。Zeev Suraski和Andi Gutmans为了这个版本重写了解析引擎。[5] 4.0 4.0.0 2000年5月22日 改成以Zend引擎作为解析器,具有两阶段解析/标签解析系统等先进功能。[15] 4.1.0 2001年12月10日 加入"超全局变量"(superglobals)功能,包含了$_GET$_POST$_SESSION[15] 4.2.0 2002年4月22日 默认取消register_globals功能。从网络接收的数据将不会设置成全局变量,增加程序安全性[15]。 4.3.0 2002年12月27日 加入命令行运行档,称为CLI。[15] 4.4.0 2005年7月11日 Added man pages for phpize and php-config scripts.[15] 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.[16] 4.4.9 2008年8月7日 More security enhancements and bug fixes. The last release of the PHP 4.4 series.[17][18] 5.0 5.0.0 2004年7月13日 Zend Engine II with a new object model.[19] 5.1.0 2005年11月24日 Performance improvements with introduction of compiler variables in re-engineered PHP Engine.[19] 5.2.0 2006年11月2日 Enabled the filter extension by default.[19] 5.2.8 2008年12月8日[20] emergent bug fix[20] 5.2.9 2009年2月26日[21] 解决了5.2.*的超过了50多个错误和多个安全问题,增加了稳定性。[21] 5.2.10 2009年6月18日[22] 这个版本修正了大量的bug和安全漏洞,并升级了时区数据库。[22] 5.3.0 2009年6月30日[23] 支持命名空间;使用XMLReader和XMLWriter增强XML支持;支持SOAP ,[24]延迟静态绑定,跳转标签(有限的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[25]

[编辑] 应用

  PHP是一个应用范围很广的语言,特别是在网络程序开发方面。一般来说PHP大多在服务器端运行,通过运行PHP的代码来产生网页提供浏览器读取,此外也可以用来开发命令行脚本程序和用户端的GUI应用程序。PHP可以在许多的不同种的服务器、操作系统、平台上运行,也可以和许多数据库系统结合。使用PHP不需要任何费用,官方组织PHP Group提供了完整的程序源代码,允许用户修改、编译、扩充来使用。[26]

[编辑] 安全

  据National Vulnerability Database数据显示,与PHP有关的数据库攻击比例为:20% 2004, 28% 2005, 43% 2006, 36% 2007, and 35% 2008[27]。其中很多的漏洞都可以通过远程操作完成,如:黑客可以通过网络连接攻击服务器,达到盗取或毁坏数据,发送垃圾邮件或进行拒绝服务攻击

[编辑] 语法

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

 echo 'Hello World!';?>

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

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

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

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

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

[编辑] 类型

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

  • 整型(integer)
  • 浮点型(float)
  • 布尔型(boolean)
  • 字符串(string)

  两种复合类型

  • 数组(array)
  • 对象(object)

  两种特殊类型

  • NULL
  • 资源 (resource)[28]

[编辑] 变量

  PHP中,变量以“$”后接变量名称来表示。变量名称区分大小写。

  有效的变量名称以字母或底线开头,后接任意数目的字母、数字或底线,PHP也支持使用多字节文字作为变量名。[29]

[编辑] 面向对象

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

[编辑] PHP相关资源

[编辑] 库

主条目:PHP库列表

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

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

[编辑] 源代码编码和加速

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

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

  除了通过编码器加速之外,PHP还可以通过动态的高速缓存机制来提升速度,加速工具有商业版的,例如Zend Platform,也有开放源代码的加速软件如eAcceleratorAPCXCache

[编辑] 模板引擎

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

[编辑] PHP 编译器

  Facebook在2010年推出HipHop编译器,HipHop以自由软件授权协议发放。HipHop把PHP源代码编译成C++,以提高速度;跟据Facebook的内部测试,HipHop的性能比本来的PHP版本高,而CPU负载减少50%。[30]

[编辑] 未来发展

[编辑] PHP 6

  • 支持Unicode
  • 移除ereg扩展, 'register_globals', 'magic_quotes'和'safe_mode'; Alternative PHP Cache;Removal of mime_magic and rewrite of fileinfo() for better MIME support[31]
  • var成为public的别名,在类中的var声明变成了public。
  • 去除了register_long_array, PHP5默认是关闭的, PHP6则干脆移除。
  • 其它改进