PHP(“PHP: Hypertext Preprocessor”,超文本預(yù)處理器的字母縮寫)是一種被廣泛應(yīng)用的開放源代碼的多用途腳本語(yǔ)言,它可嵌入到 HTML中,尤其適合 web 開發(fā)。
以上是一個(gè)簡(jiǎn)單的回答,不過(guò)這是什么意思呢?請(qǐng)看如下例子:
Example #1 一個(gè)介紹性的范例
請(qǐng)注意這個(gè)范例和其它用 C 或 Perl 語(yǔ)言寫的腳本之間的區(qū)別——與用大量的命令來(lái)編寫程序以輸出 HTML 不同的是,PHP 頁(yè)面就是 HTML,只不過(guò)在其中嵌入了一些代碼來(lái)做一些事情(在本例中輸出了 "Hi, I'm a PHP script!")。PHP 代碼被包含在特殊的起始符和結(jié)束符 <?php 和 ?> 中,使得可以進(jìn)出“PHP 模式”。
和客戶端的 JavaScript 不同的是,PHP 代碼是運(yùn)行在服務(wù)端的。如果在服務(wù)器上建立了如上例類似的代碼,則在運(yùn)行該腳本后,客戶端就能接收到其結(jié)果,但他們無(wú)法得知其背后的代碼是如何運(yùn)作的。甚至可以將 web 服務(wù)器設(shè)置成讓 PHP 來(lái)處理所有的 HTML 文件,這么一來(lái),用戶就無(wú)法得知服務(wù)端到底做了什么。
使用 PHP 的一大好處是它對(duì)于初學(xué)者來(lái)說(shuō)極其簡(jiǎn)單,同時(shí)也給專業(yè)的程序員提供了各種高級(jí)的特性。當(dāng)看到 PHP 長(zhǎng)長(zhǎng)的特性列表時(shí),請(qǐng)不要害怕??梢院芸斓娜腴T,只需幾個(gè)小時(shí)就可以自己寫一些簡(jiǎn)單的腳本。
盡管 PHP 的開發(fā)是以服務(wù)端腳本為目的,但事實(shí)上其功能遠(yuǎn)不局限與此。
PHP 能做任何事。PHP 主要是用于服務(wù)端的腳本程序,因此可以用 PHP 來(lái)完成任何其它的 CGI 程序能夠完成的工作,例如收集表單數(shù)據(jù),生成動(dòng)態(tài)網(wǎng)頁(yè),或者發(fā)送/接收 Cookies。但 PHP 的功能遠(yuǎn)不局限于此。
PHP 腳本主要用于以下三個(gè)領(lǐng)域:
PHP 能夠在所有的主流操作系統(tǒng)上使用,包括 Linux、Unix 的各種變種(包括 HP-UX、Solaris 和 OpenBSD)、Microsoft Windows、Mac OS X、RISC OS 等。今天,PHP已經(jīng)支持了大多數(shù)的 web 服務(wù)器,包括 Apache、Microsoft Internet Information Server(IIS)、Personal Web Server(PWS)、Netscape 以及 iPlant server、Oreilly Website Pro Server、Caudium、Xitami、OmniHTTPd 等。對(duì)于大多數(shù)的服務(wù)器,PHP 提供了一個(gè)模塊;還有一些 PHP 支持 CGI 標(biāo)準(zhǔn),使得 PHP 能夠作為 CGI 處理器來(lái)工作。
綜上所述,使用 PHP,可以自由地選擇操作系統(tǒng)和 web 服務(wù)器。同時(shí),還可以在開發(fā)時(shí)選擇使用面對(duì)過(guò)程和面對(duì)對(duì)象,或者兩者混和的方式來(lái)開發(fā)。盡管 PHP 4 不支持 OOP 所有的標(biāo)準(zhǔn),但很多代碼倉(cāng)庫(kù)和大型的應(yīng)用程序(包括 PEAR 庫(kù))僅使用 OOP 代碼來(lái)開發(fā)。PHP 5 彌補(bǔ)了 PHP 4 的這一弱點(diǎn),引入了完全的對(duì)象模型。
使用 PHP,并不局限于輸出 HTML。PHP 還能被用來(lái)動(dòng)態(tài)輸出圖像、PDF 文件甚至 Flash 動(dòng)畫(使用 libswf 和 Ming)。還能夠非常簡(jiǎn)便的輸出文本,例如 XHTML 以及任何其它形式的 XML 文件。PHP 能夠自動(dòng)生成這些文件,在服務(wù)端開辟出一塊動(dòng)態(tài)內(nèi)容的緩存,可以直接把它們打印出來(lái),或者將它們存儲(chǔ)到文件系統(tǒng)中。
PHP 最強(qiáng)大最顯著的特性之一,是它支持很大范圍的數(shù)據(jù)庫(kù)。使用任何針對(duì)某數(shù)據(jù)庫(kù)的擴(kuò)展(例如 mysql)編寫數(shù)據(jù)庫(kù)支持的網(wǎng)頁(yè)非常簡(jiǎn)單,或者使用抽象層如 PDO,或者通過(guò) ODBC 擴(kuò)展連接到任何支持 ODBC 標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)。其它一些數(shù)據(jù)庫(kù)也可能會(huì)用 cURL 或者 sockets,例如 CouchDB。
PHP 還支持利用諸如 LDAP、IMAP、SNMP、NNTP、POP3、HTTP、COM(Windows 環(huán)境)等不計(jì)其數(shù)的協(xié)議的服務(wù)。還可以開放原始網(wǎng)絡(luò)端口,使得任何其它的協(xié)議能夠協(xié)同工作。PHP 支持和所有 web 開發(fā)語(yǔ)言之間的 WDDX 復(fù)雜數(shù)據(jù)交換。關(guān)于相互連接,PHP 已經(jīng)支持了對(duì) Java 對(duì)象的即時(shí)連接,并且可以透明地將其用作 PHP 對(duì)象。
PHP 具有極其有效的文本處理特性,包括 Perl 兼容正則表達(dá)式(PCRE)以及許多擴(kuò)展和工具可用于解析和訪問(wèn) XML 文檔。PHP 將所有的 XML 功能標(biāo)準(zhǔn)化于堅(jiān)實(shí)的 libxml2 擴(kuò)展,并且還增加了 SimpleXML,XMLReader 以及 XMLWriter 支持以擴(kuò)充其功能。
另外,還有很多其它有趣的擴(kuò)展庫(kù),在此根據(jù)字母和分類歸類列出。還有一些附加的 PECL 擴(kuò)展可能有也可能沒(méi)有在 PHP 手冊(cè)中列出,例如 ? XDebug。
由于在這里無(wú)法列出 PHP 所有的特性和可提供的便利,請(qǐng)參閱安裝以及函數(shù)參考有關(guān)章節(jié)以獲取關(guān)于這里提到的擴(kuò)展庫(kù)更多的信息。