PHP
PHP(PHP: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起頭是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 quotes
和Safe 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() |
應用
[编辑]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嗰語法照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裏向,变量用「$」加變數嗰名字表示。變數嗰名字用大小寫是弗樣嗰。
好用嗰變數名字是用字母或者底線開頭,後臗管幾嗰字母、數字或者底線都嘸告,PHP也支持用多字节文字當变量名,阿便是講漢字也好用。[29]
物件導向
[编辑]PHP從PHP 3起便有基本嗰物件導向(Object oriented)特性,一直到PHP 5畀物件導向部份轉寫寫爻之後,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,也有開放原始碼嗰加速軟體如eAccelerator、APC、
樣板引擎
[编辑]樣板引擎讓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
- var成為public嗰別名,徠類裏var聲明變成public。
- register_long_array馱爻, PHP5默認是關牢嗰, PHP6乾脆畀伊馱及爻。
- 別樣改進
參考資料
[编辑]- ↑ Introduction. PHP Manual. 访问日脚2006-11-15.
- ↑ GPL-Incompatible, Free Software Licenses. Various Licenses and Comments about Them. Free Software Foundation. 原始文档勒2008-12-16存档. 访问日脚2008-02-22.
- ↑ Usage Stats for April 2007. 访问日脚2008-07-07.
- ↑ php.net/history
- ↑ 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.
- ↑ Template:Cite newsgroup
- ↑ Zend Engine version 2.0: Feature Overview and Design. Zend Technologies Ltd.. 原始文档勒2006-07-19存档. 访问日脚2006-09-17.
- ↑ Trachtenberg, Adam (2004-07-15). Why PHP 5 Rocks!. O'Reilly. 原始文档勒2016-03-31存档. 访问日脚2008-02-22.
- ↑ 9.0 9.1 php.net 2007 news archive. The PHP Group (2007-07-13). 访问日脚2008-02-22.
- ↑ Kerner, Sean Michael (2008-02-01). PHP 4 is Dead—Long Live PHP 5. InternetNews. 访问日脚2008-03-16.
- ↑ Late Static Binding in PHP. Digital Sandwich (2006-02-23). 访问日脚2008-03-25.
- ↑ Static Keyword. The PHP Group. 访问日脚2008-03-25.
- ↑ Using Register Globals. PHP. 访问日脚2008-04-04.
- ↑ Prepare for PHP 6. CorePHP (2005-11-23). 原始文档勒2008-03-01存档. 访问日脚2008-03-24.
- ↑ 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.
- ↑ PHP: PHP 4.4.8 Release Announcement
- ↑ PHP: Downloads
- ↑ PHP: PHP 4.4.9 Release Announcement
- ↑ 19.0 19.1 19.2 PHP: PHP 5 ChangeLog. The PHP Group (2007-11-08). 访问日脚2008-02-22.
- ↑ 20.0 20.1 PHP: News Archive - 2008
- ↑ 21.0 21.1 PHP: News Archive - 2009
- ↑ 22.0 22.1 [1]
- ↑ [2]
- ↑ Archive copy. 原始文档勒2009-01-03存档. 访问日脚2010-04-03.
- ↑ Personal homepage of Jeroen van der Meer
- ↑ Embedding PHP in HTML. O'Reilly (2001-05-03). 原始文档勒2008-02-19存档. 访问日脚2008-02-25.
- ↑ PHP-related vulnerabilities on the National Vulnerability Database (2008-03-01). 原始文档勒2009-06-28存档. 访问日脚2010-04-03.
- ↑ Types Introduction,The PHP Group
- ↑ Language variables,The PHP Group
- ↑ Personal homepage of Jeroen van der Meer