fbpx
维基百科

PHP

PHP(全称:PHP:Hypertext Preprocessor,即“PHP:超文本预处理器”)是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用。PHP的语法借鉴吸收C语言JavaPerl等流行计算机语言的特点,易于一般程序员学习。PHP的主要目标是允许网络开发人员快速编写动态页面,但PHP也被用于其他很多领域。[3]

PHP
编程范型物件導向指令式編程
設計者拉斯姆斯·勒多夫
實作者The PHP Group
发行时间1995年,​28年前​(1995[1]
目前版本
  • 8.2.1 (2023年1月5日;穩定版本)[2]
型態系統動態、弱型別
作業系統跨平台
許可證PHP许可证
網站www.php.net
啟發語言
PerlHTMLCC++JavaJavaScriptHack
影響語言
HackJSPASP

PHP最初是由勒多夫在1995年开始开发的;現在PHP的標準由the PHP Group[4]維護。PHP以PHP License作為許可協議,不過因為這個協議限制了PHP名稱的使用,所以和開放原始碼許可協議GPL不相容。[5]

PHP的應用範圍相當廣泛,尤其是在網頁程式的開發上。一般來說PHP大多執行在網頁伺服器上,通過執行PHP程式碼來產生使用者瀏覽的網頁。PHP可以在多數的伺服器和作業系統上執行。根據2013年4月的統計資料,PHP已經被安裝在超過2億4400萬個網站和210萬台伺服器上[6]

PHP在Windows上有专门的官方移植编译项目,并且分多个VC编译器版本和线程安全特性来提供不同的版本支持。

根据W3Techs的报告,截至2021年9月:“有78.9%的网站使用PHP。”[7]

開發歷史

 
Zend Technologies的創辦人之一 - Andi Gutmans
 
Zend Technologies的創辦人之一 - Zeev Suraski

PHP原本的簡稱為Personal Home Page[8],是拉斯姆斯·勒多夫為了要維護個人網頁,而用C語言開發的一些CGI工具程式集,來取代原先使用的Perl程式。最初這些工具程式用來顯示拉斯姆斯·勒多夫的個人履歷,以及統計網頁流量[9]。他將這些程式和一些表單直譯器整合起來,稱為PHP/FI。PHP/FI可以和資料庫連接,產生簡單的動態網頁程式。拉斯姆斯·勒多夫在1995年6月8日將PHP/FI公開釋出,希望可以透過社群來加速程式開發與尋找錯誤[10]。這個釋出的版本命名為PHP 2,已經有今日PHP的一些雛型,像是類似Perl的變數命名方式、表單處理功能、以及嵌入到HTML中執行的能力。程式語法上也類似Perl,有較多的限制,不過更簡單、更有彈性。[9]

在1997年,任職於Technion IIT公司的兩個以色列程式設計師:Zeev Suraski和Andi Gutmans,重寫了PHP的剖析器,成為PHP 3的基礎,而PHP也在這個時候改稱為PHP: Hypertext Preprocessor.[9]。經過幾個月測試,開發團隊在1997年11月釋出了PHP/FI 2,隨後就開始PHP 3的開放測試,最後在1998年6月正式釋出PHP 3。Zeev Suraski和Andi Gutmans在PHP 3釋出後開始改寫PHP的核心,這個在1999年釋出的剖析器稱為Zend Engine[11],他們也在以色列的Ramat Gan成立了Zend Technologies來管理PHP的開發。[9]

在2000年5月22日,以Zend Engine 1.0為基礎的PHP 4正式釋出,2004年7月13日則釋出了PHP 5,PHP 5則使用了第二代的Zend Engine[9]。PHP 5包含了許多新特色,像是強化的物件導向功能、引入PDO(PHP Data Objects,一個存取資料庫的延伸函式庫)、以及許多效能上的增強[12]。目前PHP 4已經不會繼續更新,以鼓勵用戶轉移到PHP 5。[13][14]

2008年时,PHP 5成為了PHP唯一維護中的穩定版本。

PHP 7的首个版本于2015年12月3日開發完成,包含了大量性能上的改进,同时也带来了一些新特性,最值得注意的是返回值类型声明、标量类型声明(可用于参数及返回值)。

版本歷程

代表意義
紅色 过期版本;官方停止支援
黃色 当前版本;官方仅提供安全问题修复
綠色 当前版本;官方提供安全问题和一般问题的修复
藍色 未來版本
版本 釋出日期 结束支持日期[15] 說明
1.0 1995年6月8日 正式名稱為"Personal Home Page Tools (PHP Tools)",第一次使用了"PHP"的名字。[9]
2.0 1996年4月16日 針對PHP 1.0的改進版,速度更快、體積更小,更容易產生動態網頁。[9]
3.0 1998年6月6日 2000年10月20日 開發方式改成多人共同參與。Zeev Suraski和Andi Gutmans為了這個版本重寫了剖析引擎。[9]
4.0 2000年5月22日 2001年6月23日 改成以Zend引擎作為剖析器,具有兩階段剖析/標籤剖析系統等先進功能。[16]
4.1 2001年12月10日 2002年3月2日 加入"超全域變數"(superglobals)功能,包含了$_GET$_POST$_SESSION等。[16]
4.2 2002年4月22日 2002年9月6日 預設取消register_globals功能。從網路接收的資料將不會設定成全域變數,增加程式安全性。[16]
4.3 2002年12月27日 2005年3月31日 加入命令列執行檔,稱為CLI,用以补充CGI[16][17]
4.4 2005年7月11日 2008年8月8日 新增phpizephp-config 的手冊頁。[16]
5.0 2004年7月13日 2005年9月5日 推出有着新的对象模型的Zend Engine II。[18]
5.1 2005年11月24日 2006年8月24日 在往重新设计的PHP引擎引入编译变量时做了性能提升。[18]添加了PHP数据对象(PDO)作为访问数据库的统一接口。[19]
5.2 2006年11月2日 2011年1月6日 預設開啟"過濾"的擴充功能。[18]原生的JSON支援。[20]
5.3 2009年6月30日[21] 2014年8月14日 支持命名空间;使用XMLReader和XMLWriter增强XML支持;支持SOAP ,[22]延迟静态绑定,跳转标签(有限的goto), 闭包,Native PHP archives。
5.4 2012年3月1日 2015年9月3日 支持Trait、简短数组表达式。移除了register_globals, safe_mode, allow_call_time_pass_reference, session_register(), session_unregister(), magic_quotes以及session_is_registered()。加入了内建的Web服务器。[23]增强了性能,减小内存使用量。
5.5 2013年6月20日 2016年7月10日 支持generators,用于异常处理的finally ,将OpCache(基于 Zend Optimizer+)加入官方发布中。
5.6 2014年8月28日 2018年12月31日 支持常量标量表达式、可变参数函数、指数运算符,增加phpdbg SAPI、统一的默认字符集。[24]
6.x 未发布 不適用 取消掉的、从未正式发布的PHP版本。[25][26]
7.0 2015年12月3日[27] 2018年12月3日 Zend Engine 3 (性能提升[28]并在Windows上支持 64-bit 整数),统一的变量语法, 

基于抽象语法树编译过程。

7.1 2016年12月1日 2019年12月1日 void返回值类型,类常量可见性修饰符
7.2 2017年11月30日 2020年11月30日
7.3 2018年12月6日 2021年12月6日
7.4 2019年11月28日 2022年11月28日 属性添加限定类型、箭头函数、空合并运算符赋值、数组展开操作
8.0 2020年11月26日 2023年11月26日 JIT即时编译,增加命名参数,注解实现,构造器属性提升,联合类型,Match 表达式,Nullsafe 运算符,字符串与数字的比较更符合逻辑,内部函数类型错误的一致性。
8.1 2021年11月25日 2024年11月25日
8.2 2022年12月8日 2025年12月8日
8.3 2023年11月23日 2026年11月23日

吉祥物

 
吉祥物:elePHPant

PHP計畫的吉祥物名叫「elePHPant」,PHP的logo在一頭藍象的裡面,由文森·龐蒂爾(Vincent Pontier)[29]在1998年[30]設計。其設計概念是從側面看 PHP 像隻大象[31]。當elePHPant被製作成毛絨玩具時,有時顏色會有不同。

應用

 
網路應用開發

PHP是一個應用範圍很廣的語言,特別是在網路程式開發方面。一般來說PHP大多在伺服器端執行,透過執行PHP的程式碼來產生網頁提供瀏覽器讀取,此外也可以用來開發命令列腳本程式和使用者端的GUI應用程式。PHP可以在許多的不同種的伺服器、作業系統、平台上執行,也可以和許多資料庫系統結合。使用PHP不需要任何費用,官方組織PHP Group提供了完整的程序源代码,允許使用者修改、編譯、擴充來使用。[32]

安全

据National Vulnerability Database数据显示,与PHP有关的数据库攻击比例为:20% 2004, 28% 2005, 43% 2006, 36% 2007, 35% 2008 and 32% 2009[33]。其中很多的漏洞都可以通过远程操作完成,如:黑客可以通过网络连接攻击服务器,达到盗取或毁坏数据,发送垃圾邮件或进行分散式阻斷服務攻擊。但是随着更多的关注,PHP也变得越来越安全了。

PHP官网被駭入事件

2010年12月17日,PHP代码“贡献者名单”中被加入“Wolegequ Gelivable”字样(中文含义“我勒个去 给力”),约半小时后被删除。[34][35][36]2011年3月19日,PHP官方发布声明[37]指出,黑客可能是通过wiki.php.net作为入口攻击了代码系统。并且,官方已经检查过自版本5.3.5以来釋出的代码,并没有发现恶意内容。但官方同时表示,尚未完全掌握黑客发动本次攻击的具体细节。

語法

PHP的語法參考了PerlC語言,而且可以整合在HTML之中,以下是一個簡單的Hello World程式碼:

 <?= 'Hello World!'; ?> 

PHP剖析引擎只剖析<?php?>之間的程式碼,而不包含在<?php?>之間的內容則會直接送出,所以可以用以下的方式來將PHP程式碼嵌入在HTML之中:

 <?php //-PHP-{zh-hans:代码;zh-hant:程式碼:}- ?>  html內容  <?php //-PHP-{zh-hans:代码;zh-hant:程式碼:}- ?> 

在HTML中嵌入PHP时,比如需要單獨输出某個變數,除了正常採用 echo 方式外,也可以直接採用下列方式:

 <?=$title?> 

但是上述這種方式曾經引起爭議,有的人並不推薦這種方式的縮寫[38](其原因為:並不是所有伺服器都支援縮寫,但在後期之後此選項為預設開啟),也有人因為採用這種方法,造成與 XML 搞混[39]的情況。

在判斷語句中的HTML代碼並不會被直接送出:

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

PHP可以用三種註解的形式:C與C++所使用的「/*...*/」與「//」,和Perl的「#」。

 <?php /* 多行註解的第一行  多行註解的另一行 */ // 單行註解 # 單行註解 ?> 

類型

PHP主要有八种基本数据类型[40],其中包括:

變數

PHP中,變數以「$」後接变量名稱來表示。 變數名稱區分大小寫。

有效的變數名稱以字母或底線開頭,後接任意數目的字母、數字或底線,PHP也支持使用多字节文字作为變數名。[41]

物件導向

PHP從PHP 3開始有了基本的物件導向(Object oriented)的特性,但直到PHP 5將物件導向部份重新改寫之後,PHP的物件導向功能才比較完善。現在PHP可以說是一個有完整物件導向功能的語言。

PHP相關資源

PHP框架

使用PHP框架可以更快更简单的部署项目並提高开发效率,但学习使用这些框架需要付出额外的学习成本。

最流行的PHP框架包括:Symfony, Zend Framework, LaravelPhalconCodeIgniter、Yii、ThinkPHP等等。

函式庫

內建多樣化的函數是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包管理器

Composer是php社区用来管理依赖关系的工具,一般在php项目中通过composer.json声明依赖的外部php库,然后就可以使用Composer管理包依赖。

PHP編譯器

PHP一直被當作直譯器使用。PHP編譯器則將PHP從直譯器中分離,為加快運行和改善與以其他程式語言編寫部份的互通性,例如Phalanger將PHP編譯成通用中间语言和Hiphop for PHP把PHP原始碼編譯成C++等。Facebook因應其網站大量的使用者,整合了HPHPc、HPHPi、HPHPd以及HHVM這四種腳本引擎,開發出HipHop for PHP,以加強網站效能。

發展

PHP 7

  • 基于PHPNG项目(PHP Next-Gen),它能让透明提升PHP程序性能,使PHP7的性能和HHVM相当
  • JIT引擎
  • 抽象语法树编译 AST: Abstract Syntax Tree
  • 异步编程

彩蛋

PHP含有多個彩蛋,可以透過在網域名稱的後面加上特殊字串顯示彩蛋。例如,?=PHPE9568F36-D428-11d2-A769-00AA001ACF42則會出現PHP的logo,PHP版本的不同,logo也會不同;不过该特性已经在5.5版本中被移除[42]

趣聞

PHP程式語言的官方文档中曾写过「PHP是最好的WEB开发語言,那其他的语言如何呢?」,但是这句话被華語圈的程式設計師讹传为「世界上最好的语言」并加以调侃[43][來源請求]

註釋

參考文獻

引用

  1. ^ Lerdorf, Rasmus. . The Conversations Network. 2007-04-26 [2009-12-11]. (原始内容存档于2019-01-06). 
  2. ^ 2.0 2.1 Version 8.2.1. 2023年1月5日 [2023年1月30日]. 
  3. ^ PHP:序言. [2013-05-13]. (原始内容于2013-08-06). 
  4. ^ the PHP Group. [2015-07-24]. (原始内容于2015-07-24). 
  5. ^ . Various Licenses and Comments about Them. Free Software Foundation. [2008-02-22]. (原始内容存档于2008-12-16). 
  6. ^ Usage Stats for April 2007. [2015-02-26]. (原始内容于2015-03-01). 
  7. ^ Usage statistics of PHP for websites. W3Techs - World Wide Web Technology Surveys. [2021-09-05]. 
  8. ^ php.net/history. [2018-08-12]. (原始内容于2018-08-16). 
  9. ^ 9.0 9.1 9.2 9.3 9.4 9.5 9.6 9.7 History of PHP and related projects. The PHP Group. [2008-02-25]. (原始内容于2008-07-08). 
  10. ^ Lerdorf, Rasmus. Announce: Personal Home Page Tools (PHP Tools). Newsgroup: comp.infosystems.www.authoring.cgi. 1995-06-08 [2006-09-17]. (原始内容于2006-09-03). 
  11. ^ . Zend Technologies Ltd. [2006-09-17]. (原始内容存档于2006-07-19). 
  12. ^ Trachtenberg, Adam. Why PHP 5 Rocks!. O'Reilly. 2004-07-15 [2008-02-22]. (原始内容于2016-03-31). 
  13. ^ php.net 2007 news archive. The PHP Group. 2007-07-13 [2008-02-22]. (原始内容于2019-04-07). 
  14. ^ Kerner, Sean Michael. PHP 4 is Dead—Long Live PHP 5. InternetNews. 2008-02-01 [2008-03-16]. (原始内容于2016-03-24). 
  15. ^ PHP: Unsupported Branches. php.net. [2016-06-17]. (原始内容于2019-05-15). 
  16. ^ 16.0 16.1 16.2 16.3 16.4 PHP: PHP 4 ChangeLog. The PHP Group. 2008-01-03 [2008-02-22]. (原始内容于2008-02-28). 
  17. ^ PHP: Command line usage - Manual. php.net. [2016-06-17]. (原始内容于2016-06-26). 
  18. ^ 18.0 18.1 18.2 PHP: PHP 5 ChangeLog. The PHP Group. 2007-11-08 [2008-02-22]. (原始内容于2008-02-27). 
  19. ^ PHP: Introduction - Manual. php.net. [2016-06-17]. (原始内容于2016-07-03). 
  20. ^ PHP: PHP 5 ChangeLog. www.php.net. [2016-06-17]. (原始内容于2016-06-17). 
  21. ^ 存档副本. [2018-08-12]. (原始内容于2018-08-11). 
  22. ^ Zend Weekly Summaries Issue #359. [2008-12-16]. (原始内容于2009-01-03). 
  23. ^ Built-in web server. [2012-03-26]. (原始内容于2012-03-20). 
  24. ^ PHP: PHP 5 Changelog. [2018-08-12]. (原始内容于2018-08-13). 
  25. ^ . [2015-07-24]. (原始内容存档于2015-07-24). There have been books on the shelves purporting to cover PHP 6 since at least 2008. But, in March 2010, the PHP 6 release is not out - in fact, it is not even close to out. Recent events suggest that PHP 6 will not be released before 2011 - if, indeed, it is released at all. 
  26. ^ PHP 7 moves full speed ahead. [2015-07-24]. (原始内容于2015-07-24). Recent versions of PHP have been part of the 5.x release series, but there will be no PHP 6. “We’re going to skip [version] 6 because years ago, we had plans for a 6 but those plans were very different from what we’re doing now,” Gutmans said. Going right to version 7 avoids confusion. 
  27. ^ PHP: todo:php70. 2015-05-27 [2015-06-01]. (原始内容于2015-06-21). 
  28. ^ PHP: phpng. wiki.php.net. [2016-06-17]. (原始内容于2016-06-16). 
  29. ^ PHP: ElePHPant. 2014-10-04 [2014-10-04]. (原始内容于2014-10-04). 
  30. ^ . [2017-09-30]. (原始内容存档于2017-02-14). 
  31. ^ The PHP Mascot's Birth - Creator Of The elePHPant Vincent Pontier Reveals The True Story!. [2018-08-13]. (原始内容于2018-08-13). 
  32. ^ Embedding PHP in HTML. O'Reilly. 2001-05-03 [2008-02-25]. (原始内容于2008-02-19). 
  33. ^ PHP-related vulnerabilities on the National Vulnerability Database. 2008-03-01 [2009-08-20]. (原始内容于2009-06-28). 
  34. ^ [1][失效連結]
  35. ^ PHP developer wiki server hacked. [2013-12-28]. (原始内容于2013-12-28). 
  36. ^ . [2013-12-28]. (原始内容存档于2013-12-28). 
  37. ^ 存档副本. [2018-08-12]. (原始内容于2018-08-13). 
  38. ^ [2] (页面存档备份,存于互联网档案馆),Why are “echo” short tags permanently enabled as of PHP 5.4?
  39. ^ [3] (页面存档备份,存于互联网档案馆),Escaping <? on php shorthand enabled server when using require
  40. ^ Types Introduction (页面存档备份,存于互联网档案馆),The PHP Group
  41. ^ Language variables (页面存档备份,存于互联网档案馆),The PHP Group
  42. ^ expose_php. [2018-08-12]. (原始内容于2018-08-13). 
  43. ^ 原文:PHP is the best language for web programing, but what about other languages. web.archive.org. 2010-05-07 [2019-02-21]. 原始内容存档于2010-05-07. 

来源

网页

外部連結

此條目可参照英語維基百科相應條目来扩充, 此條目在對應語言版為高品質條目, 2021年10月13日, 若您熟悉来源语言和主题, 请协助参考外语维基百科扩充条目, 请勿直接提交机械翻译, 也不要翻译不可靠, 低品质内容, 依版权协议, 译文需在编辑摘要注明来源, 或于讨论页顶部标记, href, template, translated, page, html, title, template, translated, page, translated, page, 标签, 此條目介紹的是程式設計語言, 关于貨幣單位. 此條目可参照英語維基百科相應條目来扩充 此條目在對應語言版為高品質條目 2021年10月13日 若您熟悉来源语言和主题 请协助参考外语维基百科扩充条目 请勿直接提交机械翻译 也不要翻译不可靠 低品质内容 依版权协议 译文需在编辑摘要注明来源 或于讨论页顶部标记 a href Template Translated page html title Template Translated page Translated page a 标签 此條目介紹的是程式設計語言 关于貨幣單位 请见 菲律賓披索 关于出版社 请见 PHP研究所 PHP 全称 PHP Hypertext Preprocessor 即 PHP 超文本预处理器 是一种开源的通用计算机脚本语言 尤其适用于网络开发并可嵌入HTML中使用 PHP的语法借鉴吸收C语言 Java和Perl等流行计算机语言的特点 易于一般程序员学习 PHP的主要目标是允许网络开发人员快速编写动态页面 但PHP也被用于其他很多领域 3 PHP编程范型物件導向 指令式編程設計者拉斯姆斯 勒多夫實作者The PHP Group发行时间1995年 28年前 1995 1 目前版本8 2 1 2023年1月5日 穩定版本 2 型態系統動態 弱型別作業系統跨平台許可證PHP许可证網站www wbr php wbr net啟發語言Perl HTML C C Java JavaScript Hack影響語言Hack JSP ASPPHP最初是由勒多夫在1995年开始开发的 現在PHP的標準由the PHP Group 4 維護 PHP以PHP License作為許可協議 不過因為這個協議限制了PHP名稱的使用 所以和開放原始碼許可協議GPL不相容 5 PHP的應用範圍相當廣泛 尤其是在網頁程式的開發上 一般來說PHP大多執行在網頁伺服器上 通過執行PHP程式碼來產生使用者瀏覽的網頁 PHP可以在多數的伺服器和作業系統上執行 根據2013年4月的統計資料 PHP已經被安裝在超過2億4400萬個網站和210萬台伺服器上 6 PHP在Windows上有专门的官方移植编译项目 并且分多个VC编译器版本和线程安全特性来提供不同的版本支持 根据W3Techs的报告 截至2021年9月 有78 9 的网站使用PHP 7 目录 1 開發歷史 1 1 版本歷程 2 吉祥物 3 應用 4 安全 4 1 PHP官网被駭入事件 5 語法 5 1 類型 5 2 變數 5 3 物件導向 6 PHP相關資源 6 1 PHP框架 6 2 函式庫 6 3 原始碼編碼和加速 6 4 php包管理器 7 PHP編譯器 8 發展 8 1 PHP 7 9 彩蛋 10 趣聞 11 註釋 12 參考文獻 12 1 引用 12 2 来源 13 外部連結開發歷史 编辑此章節需要更新 2022年5月28日 請更新本文以反映近況和新增内容 完成修改時 請移除本模板 Zend Technologies的創辦人之一 Andi Gutmans Zend Technologies的創辦人之一 Zeev Suraski PHP原本的簡稱為Personal Home Page 8 是拉斯姆斯 勒多夫為了要維護個人網頁 而用C語言開發的一些CGI工具程式集 來取代原先使用的Perl程式 最初這些工具程式用來顯示拉斯姆斯 勒多夫的個人履歷 以及統計網頁流量 9 他將這些程式和一些表單直譯器整合起來 稱為PHP FI PHP FI可以和資料庫連接 產生簡單的動態網頁程式 拉斯姆斯 勒多夫在1995年6月8日將PHP FI公開釋出 希望可以透過社群來加速程式開發與尋找錯誤 10 這個釋出的版本命名為PHP 2 已經有今日PHP的一些雛型 像是類似Perl的變數命名方式 表單處理功能 以及嵌入到HTML中執行的能力 程式語法上也類似Perl 有較多的限制 不過更簡單 更有彈性 9 在1997年 任職於Technion IIT公司的兩個以色列程式設計師 Zeev Suraski和Andi Gutmans 重寫了PHP的剖析器 成為PHP 3的基礎 而PHP也在這個時候改稱為PHP Hypertext Preprocessor 9 經過幾個月測試 開發團隊在1997年11月釋出了PHP FI 2 隨後就開始PHP 3的開放測試 最後在1998年6月正式釋出PHP 3 Zeev Suraski和Andi Gutmans在PHP 3釋出後開始改寫PHP的核心 這個在1999年釋出的剖析器稱為Zend Engine 11 他們也在以色列的Ramat Gan成立了Zend Technologies來管理PHP的開發 9 在2000年5月22日 以Zend Engine 1 0為基礎的PHP 4正式釋出 2004年7月13日則釋出了PHP 5 PHP 5則使用了第二代的Zend Engine 9 PHP 5包含了許多新特色 像是強化的物件導向功能 引入PDO PHP Data Objects 一個存取資料庫的延伸函式庫 以及許多效能上的增強 12 目前PHP 4已經不會繼續更新 以鼓勵用戶轉移到PHP 5 13 14 2008年时 PHP 5成為了PHP唯一維護中的穩定版本 PHP 7的首个版本于2015年12月3日開發完成 包含了大量性能上的改进 同时也带来了一些新特性 最值得注意的是返回值类型声明 标量类型声明 可用于参数及返回值 版本歷程 编辑 代表意義紅色 过期版本 官方停止支援黃色 当前版本 官方仅提供安全问题修复綠色 当前版本 官方提供安全问题和一般问题的修复藍色 未來版本版本 釋出日期 结束支持日期 15 說明1 0 1995年6月8日 正式名稱為 Personal Home Page Tools PHP Tools 第一次使用了 PHP 的名字 9 2 0 1996年4月16日 針對PHP 1 0的改進版 速度更快 體積更小 更容易產生動態網頁 9 3 0 1998年6月6日 2000年10月20日 開發方式改成多人共同參與 Zeev Suraski和Andi Gutmans為了這個版本重寫了剖析引擎 9 4 0 2000年5月22日 2001年6月23日 改成以Zend引擎作為剖析器 具有兩階段剖析 標籤剖析系統等先進功能 16 4 1 2001年12月10日 2002年3月2日 加入 超全域變數 superglobals 功能 包含了 GET POST SESSION等 16 4 2 2002年4月22日 2002年9月6日 預設取消register globals功能 從網路接收的資料將不會設定成全域變數 增加程式安全性 16 4 3 2002年12月27日 2005年3月31日 加入命令列執行檔 稱為CLI 用以补充CGI 16 17 4 4 2005年7月11日 2008年8月8日 新增phpize 及 php config 的手冊頁 16 5 0 2004年7月13日 2005年9月5日 推出有着新的对象模型的Zend Engine II 18 5 1 2005年11月24日 2006年8月24日 在往重新设计的PHP引擎引入编译变量时做了性能提升 18 添加了PHP数据对象 PDO 作为访问数据库的统一接口 19 5 2 2006年11月2日 2011年1月6日 預設開啟 過濾 的擴充功能 18 原生的JSON支援 20 5 3 2009年6月30日 21 2014年8月14日 支持命名空间 使用XMLReader和XMLWriter增强XML支持 支持SOAP 22 延迟静态绑定 跳转标签 有限的goto 闭包 Native PHP archives 5 4 2012年3月1日 2015年9月3日 支持Trait 简短数组表达式 移除了register globals safe mode allow call time pass reference session register session unregister magic quotes以及session is registered 加入了内建的Web服务器 23 增强了性能 减小内存使用量 5 5 2013年6月20日 2016年7月10日 支持generators 用于异常处理的finally 将OpCache 基于 Zend Optimizer 加入官方发布中 5 6 2014年8月28日 2018年12月31日 支持常量标量表达式 可变参数函数 指数运算符 增加phpdbg SAPI 统一的默认字符集 24 6 x 未发布 不適用 取消掉的 从未正式发布的PHP版本 25 26 7 0 2015年12月3日 27 2018年12月3日 Zend Engine 3 性能提升 28 并在Windows上支持 64 bit 整数 统一的变量语法 基于抽象语法树编译过程 7 1 2016年12月1日 2019年12月1日 void返回值类型 类常量可见性修饰符7 2 2017年11月30日 2020年11月30日7 3 2018年12月6日 2021年12月6日7 4 2019年11月28日 2022年11月28日 属性添加限定类型 箭头函数 空合并运算符赋值 数组展开操作8 0 2020年11月26日 2023年11月26日 JIT即时编译 增加命名参数 注解实现 构造器属性提升 联合类型 Match 表达式 Nullsafe 运算符 字符串与数字的比较更符合逻辑 内部函数类型错误的一致性 8 1 2021年11月25日 2024年11月25日8 2 2022年12月8日 2025年12月8日8 3 2023年11月23日 2026年11月23日吉祥物 编辑 吉祥物 elePHPant PHP計畫的吉祥物名叫 elePHPant PHP的logo在一頭藍象的裡面 由文森 龐蒂爾 Vincent Pontier 29 在1998年 30 設計 其設計概念是從側面看 PHP 像隻大象 31 當elePHPant被製作成毛絨玩具時 有時顏色會有不同 應用 编辑 網路應用開發 PHP是一個應用範圍很廣的語言 特別是在網路程式開發方面 一般來說PHP大多在伺服器端執行 透過執行PHP的程式碼來產生網頁提供瀏覽器讀取 此外也可以用來開發命令列腳本程式和使用者端的GUI應用程式 PHP可以在許多的不同種的伺服器 作業系統 平台上執行 也可以和許多資料庫系統結合 使用PHP不需要任何費用 官方組織PHP Group提供了完整的程序源代码 允許使用者修改 編譯 擴充來使用 32 安全 编辑据National Vulnerability Database数据显示 与PHP有关的数据库攻击比例为 20 2004 28 2005 43 2006 36 2007 35 2008 and 32 2009 33 其中很多的漏洞都可以通过远程操作完成 如 黑客可以通过网络连接攻击服务器 达到盗取或毁坏数据 发送垃圾邮件或进行分散式阻斷服務攻擊 但是随着更多的关注 PHP也变得越来越安全了 PHP官网被駭入事件 编辑 2010年12月17日 PHP代码 贡献者名单 中被加入 Wolegequ Gelivable 字样 中文含义 我勒个去 给力 约半小时后被删除 34 35 36 2011年3月19日 PHP官方发布声明 37 指出 黑客可能是通过wiki php net作为入口攻击了代码系统 并且 官方已经检查过自版本5 3 5以来釋出的代码 并没有发现恶意内容 但官方同时表示 尚未完全掌握黑客发动本次攻击的具体细节 語法 编辑PHP的語法參考了Perl C語言 而且可以整合在HTML之中 以下是一個簡單的Hello World程式碼 lt Hello World gt PHP剖析引擎只剖析 lt php到 gt 之間的程式碼 而不包含在 lt php到 gt 之間的內容則會直接送出 所以可以用以下的方式來將PHP程式碼嵌入在HTML之中 lt php PHP zh hans 代码 zh hant 程式碼 gt html內容 lt php PHP zh hans 代码 zh hant 程式碼 gt 在HTML中嵌入PHP时 比如需要單獨输出某個變數 除了正常採用 echo 方式外 也可以直接採用下列方式 lt title gt 但是上述這種方式曾經引起爭議 有的人並不推薦這種方式的縮寫 38 其原因為 並不是所有伺服器都支援縮寫 但在後期之後此選項為預設開啟 也有人因為採用這種方法 造成與 XML 搞混 39 的情況 在判斷語句中的HTML代碼並不會被直接送出 lt php if false gt HTML Code lt php gt PHP可以用三種註解的形式 C與C 所使用的 與 和Perl的 lt php 多行註解的第一行 多行註解的另一行 單行註解 單行註解 gt 類型 编辑 PHP主要有八种基本数据类型 40 其中包括 四種变量類型 整數型 integer 浮點數型 float 布尔型 boolean 字符串 string 兩種複合類型 陣列 array 对象 object 兩種特殊類型 NULL 資源 resource 變數 编辑 PHP中 變數以 後接变量名稱來表示 變數名稱區分大小寫 有效的變數名稱以字母或底線開頭 後接任意數目的字母 數字或底線 PHP也支持使用多字节文字作为變數名 41 物件導向 编辑 PHP從PHP 3開始有了基本的物件導向 Object oriented 的特性 但直到PHP 5將物件導向部份重新改寫之後 PHP的物件導向功能才比較完善 現在PHP可以說是一個有完整物件導向功能的語言 PHP相關資源 编辑PHP框架 编辑 主条目 PHP框架列表 使用PHP框架可以更快更简单的部署项目並提高开发效率 但学习使用这些框架需要付出额外的学习成本 最流行的PHP框架包括 Symfony Zend Framework Laravel Phalcon CodeIgniter Yii ThinkPHP等等 函式庫 编辑 內建多樣化的函數是PHP主要的特點之一 這些開放程式碼的函數提供了各種不同的功能 例如文件處理 FTP 字符串處理 等等 這些函數的使用方法和C語言相近 例如printf 這也是PHP廣為流行的原因之一 除了內建的函數之外 PHP也提供了很多扩展函式庫 extension 像是各種資料庫連接函數 資料壓縮函數 圖形處理等等 有些延伸函式庫需要從PECL PHP Extension Community Library 取得 以下是PHP程式語言提供的函式庫列表 Apache BCMath Bzip2 Calendars CCVS COM ClibPDF cURL Cybercash DB2 dBase DBM dbx DB DOM XML NET FileMaker Pro FrontBase filePro FriBiDi FTP Gettext GD Graphics Library GNU Multi Precision Library Hyperwave iconv IMAP POP3 and NNTP Informix Ingres II InterBase IRCLDAP Lotus Notes mailparse MCAL Mcrypt MCVE Mhash MIME Functions MS SQL Ming mnoGoSearch mSQL MySQL Mowhawk muscat Ncurses ODBC Oracle OpenSSL Ovrimos SQL PDF PayFlow Pro PDO POSIX PostgreSQL Printer Pspell GNU Readline GNU Recode Regular expressions QT Dom Semaphores SESAM Session Handling Shared memory SMTP SNMP Sockets SimpleXML SQLite Streams Sybase Token vpopmail WDDX Win32 API XML Xpath XML RPC XSLT YAZ Yellow Pages 網路資訊服務 NIS ZIP Zlib 原始碼編碼和加速 编辑 参见 PHP加速軟件 PHP原始碼是可以直接讀取的 即使放到伺服器上執行也是一樣 雖然讓PHP多了彈性 但相對的會造成安全危機和性能下降的問題 透過PHP編碼器 可以保護PHP的原始碼不被讀取 對商業軟體來說特別有需求 也可以提昇執行的效能 有許多公司或團體開發PHP的編碼器 將PHP程式編譯成位元組碼 byte code 再透過伺服器上安裝對應的程式來執行PHP腳本 除了透過編碼器加速之外 PHP還可以透過動態的快取機制來提昇速度 加速工具有商業版的 例如Zend Platform 也有開放原始碼的加速軟體如eAccelerator APC XCache php包管理器 编辑 Composer是php社区用来管理依赖关系的工具 一般在php项目中通过composer json声明依赖的外部php库 然后就可以使用Composer管理包依赖 PHP編譯器 编辑PHP一直被當作直譯器使用 PHP編譯器則將PHP從直譯器中分離 為加快運行和改善與以其他程式語言編寫部份的互通性 例如Phalanger將PHP編譯成通用中间语言和Hiphop for PHP把PHP原始碼編譯成C 等 Facebook因應其網站大量的使用者 整合了HPHPc HPHPi HPHPd以及HHVM這四種腳本引擎 開發出HipHop for PHP 以加強網站效能 發展 编辑PHP 7 编辑 基于PHPNG项目 PHP Next Gen 它能让透明提升PHP程序性能 使PHP7的性能和HHVM相当 JIT引擎 抽象语法树编译 AST Abstract Syntax Tree 异步编程彩蛋 编辑PHP含有多個彩蛋 可以透過在網域名稱的後面加上特殊字串顯示彩蛋 例如 PHPE9568F36 D428 11d2 A769 00AA001ACF42則會出現PHP的logo PHP版本的不同 logo也會不同 不过该特性已经在5 5版本中被移除 42 趣聞 编辑PHP程式語言的官方文档中曾写过 PHP是最好的WEB开发語言 那其他的语言如何呢 但是这句话被華語圈的程式設計師讹传为 世界上最好的语言 并加以调侃 43 來源請求 註釋 编辑參考文獻 编辑引用 编辑 Lerdorf Rasmus PHP on Hormones history of PHP presentation by Rasmus Lerdorf given at the MySQL Conference in Santa Clara California The Conversations Network 2007 04 26 2009 12 11 原始内容存档于2019 01 06 2 0 2 1 Version 8 2 1 2023年1月5日 2023年1月30日 PHP 序言 2013 05 13 原始内容存档于2013 08 06 the PHP Group 2015 07 24 原始内容存档于2015 07 24 GPL Incompatible Free Software Licenses Various Licenses and Comments about Them Free Software Foundation 2008 02 22 原始内容存档于2008 12 16 Usage Stats for April 2007 2015 02 26 原始内容存档于2015 03 01 Usage statistics of PHP for websites W3Techs World Wide Web Technology Surveys 2021 09 05 php net history 2018 08 12 原始内容存档于2018 08 16 9 0 9 1 9 2 9 3 9 4 9 5 9 6 9 7 History of PHP and related projects The PHP Group 2008 02 25 原始内容存档于2008 07 08 Lerdorf Rasmus Announce Personal Home Page Tools PHP Tools Newsgroup comp infosystems www authoring cgi 1995 06 08 2006 09 17 原始内容存档于2006 09 03 Zend Engine version 2 0 Feature Overview and Design Zend Technologies Ltd 2006 09 17 原始内容存档于2006 07 19 Trachtenberg Adam Why PHP 5 Rocks O Reilly 2004 07 15 2008 02 22 原始内容存档于2016 03 31 php net 2007 news archive The PHP Group 2007 07 13 2008 02 22 原始内容存档于2019 04 07 Kerner Sean Michael PHP 4 is Dead Long Live PHP 5 InternetNews 2008 02 01 2008 03 16 原始内容存档于2016 03 24 PHP Unsupported Branches php net 2016 06 17 原始内容存档于2019 05 15 16 0 16 1 16 2 16 3 16 4 PHP PHP 4 ChangeLog The PHP Group 2008 01 03 2008 02 22 原始内容存档于2008 02 28 PHP Command line usage Manual php net 2016 06 17 原始内容存档于2016 06 26 18 0 18 1 18 2 PHP PHP 5 ChangeLog The PHP Group 2007 11 08 2008 02 22 原始内容存档于2008 02 27 PHP Introduction Manual php net 2016 06 17 原始内容存档于2016 07 03 PHP PHP 5 ChangeLog www php net 2016 06 17 原始内容存档于2016 06 17 存档副本 2018 08 12 原始内容存档于2018 08 11 Zend Weekly Summaries Issue 359 2008 12 16 原始内容存档于2009 01 03 Built in web server 2012 03 26 原始内容存档于2012 03 20 PHP PHP 5 Changelog 2018 08 12 原始内容存档于2018 08 13 Resetting PHP 6 2015 07 24 原始内容存档于2015 07 24 There have been books on the shelves purporting to cover PHP 6 since at least 2008 But in March 2010 the PHP 6 release is not out in fact it is not even close to out Recent events suggest that PHP 6 will not be released before 2011 if indeed it is released at all PHP 7 moves full speed ahead 2015 07 24 原始内容存档于2015 07 24 Recent versions of PHP have been part of the 5 x release series but there will be no PHP 6 We re going to skip version 6 because years ago we had plans for a 6 but those plans were very different from what we re doing now Gutmans said Going right to version 7 avoids confusion PHP todo php70 2015 05 27 2015 06 01 原始内容存档于2015 06 21 PHP phpng wiki php net 2016 06 17 原始内容存档于2016 06 16 PHP ElePHPant 2014 10 04 2014 10 04 原始内容存档于2014 10 04 What is ElePHPant and Why PHP Uses Elephants in Some Logotypes 2017 09 30 原始内容存档于2017 02 14 The PHP Mascot s Birth Creator Of The elePHPant Vincent Pontier Reveals The True Story 2018 08 13 原始内容存档于2018 08 13 Embedding PHP in HTML O Reilly 2001 05 03 2008 02 25 原始内容存档于2008 02 19 PHP related vulnerabilities on the National Vulnerability Database 2008 03 01 2009 08 20 原始内容存档于2009 06 28 1 失效連結 PHP developer wiki server hacked 2013 12 28 原始内容存档于2013 12 28 PHP官方网站被入侵 近期请勿从官方下载源码 2013 12 28 原始内容存档于2013 12 28 存档副本 2018 08 12 原始内容存档于2018 08 13 2 页面存档备份 存于互联网档案馆 Why are echo short tags permanently enabled as of PHP 5 4 3 页面存档备份 存于互联网档案馆 Escaping lt on php shorthand enabled server when using require Types Introduction 页面存档备份 存于互联网档案馆 The PHP Group Language variables 页面存档备份 存于互联网档案馆 The PHP Group expose php 2018 08 12 原始内容存档于2018 08 13 原文 PHP is the best language for web programing but what about other languages PHP PHP and other languages Manual web archive org 2010 05 07 2019 02 21 原始内容存档于2010 05 07 来源 编辑 网页PHP手冊 页面存档备份 存于互联网档案馆 函数参考 页面存档备份 存于互联网档案馆 外部連結 编辑从维基百科的姊妹计划了解更多有关 PHP 的内容 维基共享资源上的多媒体资源 维基教科书上的教科书和手册 维基学院上的學習资源官方网站 开放式目录计划中和PHP相关的内容 PHP wiki 页面存档备份 存于互联网档案馆 PHP参考手册 页面存档备份 存于互联网档案馆 CentOS下安装PHP7 页面存档备份 存于互联网档案馆 Rocky Linux 8 安裝多個 PHP 版本 页面存档备份 存于互联网档案馆 取自 https zh wikipedia org w index php title PHP amp oldid 75326922, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。