Web Analytics
Privacy Policy Cookie Policy Terms and Conditions PHP - Wikipedia

PHP

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

PHP
开发者 PHP 組織
最新穩定版 5.2.0 / 2006年11月2日 /
操作系统 跨平台
类型 腳本語言
许可协议 PHP License 3.01
www.php.net

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

PHP主要用於服务器端应用程序及動態網頁上,但是也可以用在命令列上執行,或是開發獨立的-{zh-cn:窗口程序;zh-tw:視窗程式;zh-hk:視窗程式;zh-sg:窗口程序}-介面(GUI

目录

[编辑] 開發歷史

1994年,加拿大籍的程式設計師Rasmus Lerdorf開發了一組以C語言為基礎的CGI程式,目的是要取代一些用來維護他個人網站的Perl程式,不久之後,他把這些CGI程式公佈並取名為"Personal Home Page Tools",這也是PHP名稱的由來。Rasmus Lerdorf一直維護PHP語言直到PHP第二版,使用的解析引擎為PHP/FI。

[编辑] PHP 3

1997年,Tel Aviv 公司的Zeev Suraski 和 Andi Gutmans 改寫了原本的解析引擎PHP/FI,並把PHP重新命名為"PHP: Hypertext Preprocessor"。在1998年公佈了PHP 3提供大眾下載測試,1999年兩人在以色列成立了Zend Technologies公司來投入PHP的開發工作,並且開始製作下一代的解析引擎 - Zend引擎

[编辑] PHP 4

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

[编辑] PHP 5

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

  • 更完整的面向对象支持:基本上到PHP 5之後PHP才算是比較完整的面向对象語言。
  • 透過新的Zend引擎,提昇了PHP執行的速度。
  • MySQL資料庫有更完整的支持。
  • 更佳的XML支持。
  • 內建SQLite資料庫(但在PHP 5.1取消了內建,改用扩展函数庫的方式)。
  • 整合了SOAP的支持。
  • 提供許多程序語言有的例外處理功能。
  • 實驗性的介紹新的資料庫存取介面PDO(PHP Data Objects),在PHP5.1則開始預設安裝PDO。

最新的版本是2006年11月发布的5.2.0

[编辑] 應用

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

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

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

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

[编辑] 命令列腳本

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程式碼
?>

PHP可以用三種註解的形式:C語言的/*...*/、C++和Perl的//#

[编辑] 變數類型

PHP主要有以下四種變數類型:

  • 數字類型
  • 布林值
  • 字串
  • NULL
  • 資源
  • 陣列

[编辑] 物件導向

PHP從PHP 3開始有了基本的物件導向,但直到PHP 5將物件導向部份重新改寫之後,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)。

[编辑] 樣板引擎

Smarty

  • Smarty是一个php模板引擎.
  • 更准确的说,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法,可以描述为应用程序员和美工扮演了不同的角色,因为在大多数情况下 ,他们不可能是同一个人.例如,你正在创建一个用于浏览新闻的网页,新闻标题,标签栏,作者和内容等都是内容要素,他们并不包含应该怎样去呈现.在Smarty的程序里,这些被忽略了.模板设计者们编辑模板,组合使用html标签和模板标签去格式化这些要素的输出(html表格,背景色,字体大小,样式表,等等).有一天程序员想要改变文章检索的方式(也就是程序逻辑的改变).这个改变不影响模板设计者,内容仍将准确的输出到模板.同样的,哪天美工吃多了想要完全重做界面,也不会影响到程序逻辑.
  • 程序员可以改变逻辑而不需要重新构建模板,模板设计者可以改变模板而不影响到逻辑

[编辑] PEAR

[编辑] PECL

[编辑] 對PHP的批評

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

[编辑] 參考資料

[编辑] 相关链接

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

[编辑] 与PHP相关的资源

網頁技術與標準编辑

文档呈现语言: HTML* | XHTML* | XML* | XForms*

样式格式描述语言: CSS* | XSL*

动态网页技术: CGI | ASP | ASP.NET | ColdFusion | JSP | PHP

客户端交互技术: ActiveX | Java Applet | Flash | AJAX | XMLHTTP*

客户端脚本语言: JavaScript | JScript | VBScript | ECMAScript

标识定位语言: URL | URI | XPath |

文档纲要语言: DTD* | XML Schema*

* 由W3C制定和维护的标准与规范

工业编程语言: A+ | Ada | -{zh-cn:汇编语言;zh-tw:組合語言}- | B | Brainfuck | C | C++ | C++/CLI | COBOL | Delphi | Eiffel | Erlang | FORTRAN | IronPython | Java | JRuby | Jython | LISP | Nuva | Oberon | Objective-C | OCaml | Pascal | Powerbuilder | QBASIC | R | REXX | Self | Smalltalk | SQL | Visual Basic | PHP | C# | F# | J# | Visual Basic .NET

脚本编程语言: ActionScript | JavaScript | JScript | Lua | Nuva | Perl | PostScript | Python | Ruby | Tcl/Tk | VBScript

GPU用著色器語言: Cg | HLSL

学术编程语言: APL/J | Haskell | Logo | ML | Prolog | Scheme | SAC

其他编程语言: ALGOL | BASIC | Clipper | Forth | Modula-2/Modula-3 | MUMPS | PL/I | Simula

THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - 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 - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - 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 - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - 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 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 -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - 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 - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - 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 - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - 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:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - 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 - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - 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 - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - 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