New Immissions/Updates:
boundless - educate - edutalab - empatico - es-ebooks - es16 - fr16 - fsfiles - hesperian - solidaria - wikipediaforschools
- wikipediaforschoolses - wikipediaforschoolsfr - wikipediaforschoolspt - worldmap -

See also: Liber Liber - Libro Parlato - Liber Musica  - Manuzio -  Liber Liber ISO Files - Alphabetical Order - Multivolume ZIP Complete Archive - PDF Files - OGG Music Files -

PROJECT GUTENBERG HTML: Volume I - Volume II - Volume III - Volume IV - Volume V - Volume VI - Volume VII - Volume VIII - Volume IX

Ascolta ""Volevo solo fare un audiolibro"" su Spreaker.
CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
PHP - Wikipedia

PHP

维基百科,自由的百科全书

PHP
编程范型: 物件導向、函數式
設計者: Rasmus Lerdorf
實作者: The PHP Group
最近釋出日期: 5.2.1 / 2007年2月8日
型態系統: 動態、弱型別
啟發語言: PerlC
作業系統: 跨平台
許可證: PHP License
Website: PHP License 3.01

PHP 是一种流行的开放源代码腳本语言。官方正式名稱为“PHP: Hypertext Preprocessor”的递归缩写。

PHP主要用於服务器端应用程序及動態網頁上,但是也可以用在命令列上執行,或是開發獨立的圖形使用者介面(GUI)。

目录

[编辑] 發展歷史

[编辑] PHP/FI

1994年,加拿大籍的程式設計師Rasmus Lerdorf開發了一組Perl腳本,用來追蹤他的線上履歷何時被使用到,他把這組腳本命名為"Personal Home Page Tools"。隨著這個腳本的功能日趨複雜,Lerdorf開始以C語言實做一些功能,例如連接資料庫、簡易的動態網頁開發。Lerdorf決定釋出這組程式的原始碼,讓大眾可以修改,並把這個程式命名為PHP/FI(Personal Home Page / Forms Interpreter的縮寫)。隨著PHP 3的出現,PHP/FI也很快的結束開發。

[编辑] PHP 3

1997年,Tel Aviv公司的Zeev Suraski和Andi Gutmans改寫PHP的解析引擎PHP/FI,Rasmus Lerdorf也決定中止PHP/FI的開發,並把PHP重新命名為"PHP: Hypertext Preprocessor"。經過9個月的測試,在1998年釋出了PHP 3。PHP 3最大的特色是加入了延伸函式庫的功能,吸引了許多人投入PHP延伸函式庫的開發,豐富了PHP的功能,另外物件導向的功能也在PHP 3開始出現(不過並不是很完整)。1999年兩人在以色列成立了Zend Technologies公司來投入PHP的開發工作,並且開始製作下一代的PHP解析引擎 - Zend引擎

[编辑] PHP 4

2000年5月22日,以Zend引擎 1.0為解析引擎的PHP 4.0 发布。這也是PHP開始大受歡迎的版本,目前PHP 4還有在做安全性的更新,最新的版本是2007年2月發佈的PHP 4.4.5版。

[编辑] PHP 5

2004年7月13日,以Zend引擎II为基礎的PHP 5.0 发布,同時也加入了許多新特性:[1]

  • 更完整的物件導向支持:基本上到PHP 5之後PHP才算是比較完整的面向对象語言。
  • 透過新的Zend引擎,提昇了PHP執行的速度。
  • MySQL資料庫有更完整的支持。
  • 更佳的XML支持。
  • 內建SQLite資料庫(但在PHP 5.1取消了內建,改用扩展函数庫的方式)。
  • 整合了SOAP的支持。
  • 提供例外處理。
  • 新的資料庫存取介面PDO(PHP Data Objects)。

最新的版本是2006年2月發佈的5.2.1

[编辑] 應用

PHP主要應用在網頁伺服器,處理使用者的輸入來產生網頁。但是命令列腳本或是視窗程式介面(GUI)的開發也是PHP的主要應用範圍。

[编辑] 伺服器端腳本語言

PHP最初就是設計成伺服器端腳本語言,因此這也是PHP應用最廣的部份。在此領域有許多其他的競爭者,例如ASP.NETColdFusionJSPPerlRuby on Rails等等。

在網路工業領域,PHP是LAMP架構的其中一部分,所謂的LAMP是指Linux、Apache、MySQL、以及PHP所組成的網路環境,提供了許多安全、可靠的網頁應用程式。PHP目前已經是全世界最受歡迎的伺服器端腳本語言,跨平台的特性更是讓PHP廣為流傳,目前世界上有超過2000萬台伺服器安裝有PHP[2]

[编辑] 命令列腳本

PHP也可以用命令列上執行來使用,例如分析紀錄檔、系統管理工作等。這些工作過去都是由一些其他的腳本語言例如Perl, Python, awk等來執行,PHP的在命令列上的使用則逐漸增加。

[编辑] 圖形使用者介面(GUI)

透過和GUI函式庫GTK+的結合,PHP也可以應用在圖形使用者介面(GUI)的開發上,目前的應用還不普遍。

[编辑] 語法

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主要有以下四種标量類型:

  • 整数 (integer)
  • 浮点数(float)
  • 布林值 (boolean)
  • 字串 (string)

两种复合类型:

  • 陣列 (array)
  • 对象(object)

两种特殊类型

  • NULL
  • 資源 (resource)[3]

[编辑] 变量

PHP中的变量用“$”后跟变量名表示。变量名是大小写敏感的。有效的变量名以字母或下划线打头,后跟任意数目的字母、数字或下划线。[4]

[编辑] 物件導向

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

[编辑] PHP相關資源

[编辑] 函式庫

主条目:PHP函式庫列表

內建多樣化的函數是PHP主要的特點之一,這些開放程式碼的函數提供了各種不同的功能,例如檔案處理、FTP、字串處理、等等。這些函數的使用方法和C語言相近(例如printf),這也是PHP廣為流行的原因之一。

除了內建的函數之外,PHP也提供了很多延伸函式庫(extension),像是各種資料庫連接函數、資料壓縮函數、圖形處理等等。有些延伸函式庫需要從PECL(PHP Extension Community Library)取得。

[编辑] 原始碼編碼和加速

PHP原始碼是可以直接讀取的,即使放到伺服器上執行也是一樣。雖然讓PHP多了彈性,但相對的會造成安全危機和性能下降的問題。

透過PHP編碼器,可以保護PHP的原始碼不被讀取(對商業軟體來說特別有需求),也可以提昇執行的效能。有許多公司或團體開發PHP的編碼器,將PHP程式編譯成位元組碼,再透過伺服器上安裝對應的程式來執行PHP腳本。

除了透過編碼器加速之外,PHP還可以透過動態的快取機制來提昇速度,加速工具有商業版的,例如Zend Platform,也有開放原始碼的加速軟體如eAccelerator、APC、XCache。

[编辑] 樣板引擎

樣板引擎讓PHP應用程式可以做邏輯和使用介面上的分離。其中一個受歡迎的樣板引擎是PHP官方開發的Smarty。

[编辑] PEAR

PEARPHP Extension and Application Repository的縮寫,由Stig S. Bakken於2000年在PHP開發者會議(PHP Developers' Meeting, PDM) 上提出,目的是實做可以重複使用的函式庫來提供PHP社群使用。到今天PEAR已經包含很多類型的函式庫,例如資料庫連接、內容快取、數學計算、電子商務等等。

[编辑] PECL

PECL是PHP Extension Community Library的縮寫,目的是提供PHP社群各種延伸函式庫。PECL在2003年從PEAR專案分離出來,現在已經是一個獨立運作的專案。

[编辑] 對PHP的批評

即使PHP是廣受歡迎的語言,但仍然受到很多的批評,例如:

  • PHP沒有原生支援Unicode或是多位元字集(例如中文、日文、韓文等需要用兩個以上ASCII字元來表示的字集),導致用PHP寫的軟體在國際語言化上遇到相當多的困難。
  • PHP沒有名字空間(Namespace)的設計,降低了PHP語言設計上的彈性,也導致函數名稱過長的問題。
  • PHP的函數命名規則非常的混亂,許多函數功能類似,但是卻使用不同的函數名稱和參數順序,例如strpos($haystack, needle)in_array($needle, $haystack)strcasecmpstristr,導致編寫PHP程式時需要做相當多的手冊查詢工作,初學者也往往不知不覺重新編寫已經內建的函數,降低了開發的效率。
  • PHP的魔術引號(magic quotes)功能可以自動處理使用者輸入字串中的跳脫字元,有效避免SQL隱碼攻擊(SQL injection),但是因為不是每個使用者的輸入都會寫入到資料庫,處理這些沒有寫入資料庫的字串便浪費了效能。此外不是每個PHP環境都會開啟魔術引號,程式設計時需要便需要對不同的伺服器環境做因應,造成程式設計上的麻煩。魔術引號功能預計將會於PHP 6時取消。
  • 有些PHP的延伸函式庫不是執行緒安全(threadsafe),導致PHP安裝在多執行緒的伺服器例如Apache 2上會發生不穩定的狀況。[5]

[编辑] 未來發展

PHP 6目前已經開始開發,將針對PHP 5的一些缺點做改進[6],例如:

  • 原生Unicode支援
  • 移除魔術引號(magic quotes)
  • 移除全域變數(register_globals)
  • 移除安全模式(safe_mode)

PHP 6許多的功能尚未定案,仍然在討論中,發佈的日期也尚未確定。

[编辑] 參考資料

[编辑] 相关链接

您可以在維基教科書中查找此百科条目的相關電子教程:

[编辑] 与PHP相关的资源

Static Wikipedia (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu