跳转到内容

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:程序設計語言

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

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy