跳转到内容

PHP

出自维基百科,自由个百科全书

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]

開發歷史

[编辑]
PHP的發明人Rasmus Lerdorf
Zend Technologies的創辦人之一 - Andi Gutmans
Zend 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 5有無數新嗰特色,同強化嗰物件導向功能、引入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程式:

 <?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裏向,变量用「$」加變數嗰名字表示。變數嗰名字用大小寫是弗樣嗰。

好用嗰變數名字是用字母或者底線開頭,後臗管幾嗰字母、數字或者底線都嘸告,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,也有開放原始碼嗰加速軟體如eAcceleratorAPC

XCache

樣板引擎

[编辑]

樣板引擎讓PHP應用程式好畀邏輯介面搭使用介面兩嗰分開,讓程式開發進行還省力,目前人蠻中意嗰樣板引擎是PHP官方開發嗰Smarty。不過樣板引擎嗰效能有爭議,因為PHP本身便是一箇樣板引擎,用樣板引擎反而變成「轉發明擂盤」(reinventing the wheel)。樣板引擎頂好嗰便是不懂PHP程式碼嗰人也好用介面來開發,因為樣板引擎嗰語言比PHP還簡單。

未來發展

[编辑]

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[30]

  • var成為public嗰別名,徠類裏var聲明變成public。
  • register_long_array馱爻, PHP5默認是關牢嗰, PHP6乾脆畀伊馱及爻。
  • 別樣改進

參考資料

[编辑]
  1. Introduction. PHP Manual. 访问日脚2006-11-15.
  2. GPL-Incompatible, Free Software Licenses. Various Licenses and Comments about Them. Free Software Foundation. 原始文档勒2008-12-16存档. 访问日脚2008-02-22.
  3. Usage Stats for April 2007. 访问日脚2008-07-07.
  4. php.net/history
  5. 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 History of PHP and related projects. The PHP Group. 访问日脚2008-02-25.
  6. Template:Cite newsgroup
  7. Zend Engine version 2.0: Feature Overview and Design. Zend Technologies Ltd.. 原始文档勒2006-07-19存档. 访问日脚2006-09-17.
  8. Trachtenberg, Adam (2004-07-15). Why PHP 5 Rocks!. O'Reilly. 原始文档勒2016-03-31存档. 访问日脚2008-02-22.
  9. 9.0 9.1 php.net 2007 news archive. The PHP Group (2007-07-13). 访问日脚2008-02-22.
  10. Kerner, Sean Michael (2008-02-01). PHP 4 is Dead—Long Live PHP 5. InternetNews. 访问日脚2008-03-16.
  11. Late Static Binding in PHP. Digital Sandwich (2006-02-23). 访问日脚2008-03-25.
  12. Static Keyword. The PHP Group. 访问日脚2008-03-25.
  13. Using Register Globals. PHP. 访问日脚2008-04-04.
  14. Prepare for PHP 6. CorePHP (2005-11-23). 原始文档勒2008-03-01存档. 访问日脚2008-03-24.
  15. 15.0 15.1 15.2 15.3 15.4 [http://www.php.net/ChangeLog-4.php PHP: PHP 4 ChangeLog]. The PHP Group (2008-01-03). 访问日脚2008-02-22.
  16. PHP: PHP 4.4.8 Release Announcement
  17. PHP: Downloads
  18. PHP: PHP 4.4.9 Release Announcement
  19. 19.0 19.1 19.2 PHP: PHP 5 ChangeLog. The PHP Group (2007-11-08). 访问日脚2008-02-22.
  20. 20.0 20.1 PHP: News Archive - 2008
  21. 21.0 21.1 PHP: News Archive - 2009
  22. 22.0 22.1 [1]
  23. [2]
  24. Archive copy. 原始文档勒2009-01-03存档. 访问日脚2010-04-03.
  25. Personal homepage of Jeroen van der Meer
  26. Embedding PHP in HTML. O'Reilly (2001-05-03). 原始文档勒2008-02-19存档. 访问日脚2008-02-25.
  27. PHP-related vulnerabilities on the National Vulnerability Database (2008-03-01). 原始文档勒2009-06-28存档. 访问日脚2010-04-03.
  28. Types Introduction,The PHP Group
  29. Language variables,The PHP Group
  30. Personal homepage of Jeroen van der Meer

外部鏈接

[编辑]

Template:程序設計語言

维基共享资源里向寻得着搭该篇文章搭界个多媒体资源: