簡(jiǎn)要介紹了 PHP 腳本語言,討論了 PHP 的起源、性能和適用的平臺(tái)。一個(gè)簡(jiǎn)單的 PHP 腳本示例則著重說明了其基本語法和用法。如果您從事基于 Web 的開發(fā)工作,那么可能已經(jīng)聽說過 PHP。您也許不太確切地知道 PHP 是什么、如何工作或者為什么如此熱門,但現(xiàn)在該是進(jìn)一步了解 PHP 的時(shí)候了。因此本文簡(jiǎn)要介紹了關(guān)于 PHP 基礎(chǔ)的基本概念。一點(diǎn)背景知識(shí)PHP 是作為一個(gè)小開放源碼,隨著越來越多的人意識(shí)到它的實(shí)用性從而逐漸發(fā)展起來。Rasmus Lerdorf 在 1994 年發(fā)布了 PHP 的第一個(gè)版本。從那時(shí)起它就飛速發(fā)展,并在原始發(fā)行版上經(jīng)過無數(shù)的改進(jìn)和完善現(xiàn)在已經(jīng)發(fā)展到版本 4.0.3 。 PHP 是一種嵌入在 HTML 并由服務(wù)器解釋的腳本語言。它可以用于管理動(dòng)態(tài)內(nèi)容、支持數(shù)據(jù)庫(kù)、處理會(huì)話跟蹤,甚至構(gòu)建整個(gè)電子商務(wù)站點(diǎn)。它支持許多流行的數(shù)據(jù)庫(kù),包括 html' target='_blank'>MySQL、PostgreSQL、Oracle、Sybase、Informix 和 Microsoft SQL Server。動(dòng)態(tài)與靜態(tài)內(nèi)容動(dòng)態(tài)內(nèi)容為什么這么熱門?假設(shè)您正在管理有 10 個(gè)產(chǎn)品的電子商務(wù)站點(diǎn)。只要產(chǎn)品不是經(jīng)常變動(dòng)或者預(yù)料到它不會(huì)有太大的變動(dòng),那么手工編寫 10 個(gè)帶有必要的信息、表單和諸如此類內(nèi)容的靜態(tài)產(chǎn)品頁面是不困難的。但是,假設(shè)您在本月再要添加 10 個(gè)或更多產(chǎn)品,然后在下個(gè)月要更多,而且價(jià)格有時(shí)會(huì)變動(dòng)或者想改變站點(diǎn)的觀感。那么您就會(huì)陷入用手工重新編寫數(shù)十個(gè),也許上百個(gè)靜態(tài)頁面的困境中。 另一方面,假設(shè)您從創(chuàng)建 product.php 頁面開始。它沒有靜態(tài)信息,而是編碼成可以從產(chǎn)品數(shù)據(jù)庫(kù)中提取信息并動(dòng)態(tài)地構(gòu)建一個(gè)頁面。然后您就擁有了一個(gè)元數(shù)據(jù)頁面,它可以根據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中的信息提供一個(gè)、一百個(gè)、甚至十萬個(gè)單獨(dú)頁面。現(xiàn)在網(wǎng)站管理員不再整天都簡(jiǎn)單重復(fù)更新靜態(tài)頁面的工作,因?yàn)樵诟鹿緮?shù)據(jù)庫(kù)中的信息同時(shí)就可以更新頁面上的信息。這樣就消除了令人頭疼的時(shí)間延遲(在數(shù)據(jù)庫(kù)中更改信息和在網(wǎng)站上顯示信息之間的時(shí)間間隔)。總體來說,PHP 非常適合 Web 上的工作。但它并不是唯一的方法;如 Perl、Java、JavaScript、ASP、Python、Tcl、CGI 以及其它許多方法都可以生成動(dòng)態(tài)的內(nèi)容。但是,PHP 的優(yōu)點(diǎn)是:它是專為基于 Web 的問題而設(shè)計(jì)的以及它是開放源碼。如果您正在為文字處理或 3D 游戲尋找程序設(shè)計(jì)語言,那 PHP 可能不是您所需要的語言。如果您需要運(yùn)行一個(gè)具有動(dòng)態(tài)內(nèi)容、數(shù)據(jù)庫(kù)交互和電子貿(mào)易的網(wǎng)站,那么就請(qǐng)繼續(xù)讀下去,因?yàn)?PHP 在這方面確實(shí)是非常有用的。PHP 適用的平臺(tái)大多數(shù)常規(guī) PHP 的安裝通常是與 Linux 或各種 UNIX 上的 Apache 一起運(yùn)行的 PHP 模塊。但是如果正在使用其它平臺(tái),不要擔(dān)心。PHP 可以在 Windows NT 和 9x 以及其它許多 Web 服務(wù)器上運(yùn)行。可以在主要介紹 Apache/Linux/PHP 組合的一些網(wǎng)站上找到更多有關(guān) PHP 的文檔,但它并不是支持 PHP 的唯一平臺(tái)。 許可證和使用購(gòu)買具有全部功能的嵌入式 Web 腳本語言要花多少錢?一分錢不花?PHP 是一個(gè)開放源碼項(xiàng)目,所以沒有購(gòu)買許可證的費(fèi)用或限制使用的問題。您可以使用 PHP 來運(yùn)行小的、非贏利性站點(diǎn),或者運(yùn)行十億美元的電子商務(wù)網(wǎng)站,而且成本是一樣的:零。不僅如此,如果想要或需要修改 PHP,可以修改它。 PHP 并沒有得到 GPL 的許可,但它自己的許可證允許重新分發(fā)代碼和/或二進(jìn)制文件。使用 PHP好,現(xiàn)在您已經(jīng)確信要真正地嘗試一下 PHP 了吧。我們先看一些簡(jiǎn)單的例子,這樣您對(duì) PHP 就有個(gè)大概了解。記住決這不是深入了解 PHP 的途徑,僅僅是個(gè)快速入門而已。 Hello, World! 為了對(duì) PHP 有個(gè)了解,讓我們來看一下幾個(gè)非常簡(jiǎn)單的 PHP 腳本。既然 Hello, World! 是個(gè)常用的示例,那我們就編寫一個(gè)友好的小 Hello, World! 腳本。 如早些時(shí)候所提到的,PHP 是嵌入在 HTML 中的。(可能您的文件幾乎沒有包含 HTML,但是通常這個(gè)文件是 PHP 與 HTML 的混合體。)這意味著在您正常的 HTML 中(或 XHTML,如果您處在比較前沿的位置),會(huì)有類似這樣的 PHP 語句: body bgcolor= white strong How to say Hello, World! /strong
?php echo Hello, World! ? br Simple, huh? /body 很簡(jiǎn)單,不是嗎?這僅僅是一個(gè) echo 語句,就這樣。當(dāng)然,僅僅這樣是沒有多大用處的。但是它確實(shí)告訴我們關(guān)于語言的一些東西。(順便說一下,如果檢查 HTML 輸出,就會(huì)注意到 PHP 的代碼并沒有出現(xiàn)在從服務(wù)器送到您 Web 瀏覽器的文件中。所有出現(xiàn)在 Web 頁面中的 PHP 都會(huì)被處理并從頁面中剝離;從 WEB 服務(wù)器返回給客戶機(jī)的僅僅是純 HTML 輸出。)在 Web 頁面上打印日期和時(shí)間 現(xiàn)在我們做一些稍微實(shí)用的事情。這個(gè)示例將在 Web 頁面上打印日期和時(shí)間。 body bgcolor= white strong An Example of PHP in Action /strong ?php echo The Current Date and Time is: br echo date( g:i A l, F j Y. ? // g = the hour, in 12-hour format // i = minutes // A = print AM or PM, depending... // l = print the day of the week // F = print the month // j = print the day of the month // Y = print the year - all four digits此代碼生成以下輸出: The Current Date and Time is: 11:00 AM Friday, October 20 2000.請(qǐng)注意,這里揉和了 PHP 和 HTML。假設(shè)您已經(jīng)了解 HTML,所以這里僅解釋 PHP 代碼。在 PHP.net (請(qǐng)參閱 參考資料)上可以找到完整的 PHP 參考。 PHP 代碼是以標(biāo)記 ?php 開始并以 ? 結(jié)束的。這就告訴服務(wù)器在 ?php 和 ? 之間的所有內(nèi)容需要用 PHP 指令進(jìn)行語法分析,如果發(fā)現(xiàn)它們,就需要執(zhí)行它們。請(qǐng)注意,當(dāng)處理和服務(wù)您的文件時(shí),客戶機(jī)會(huì)收到普通的 HTML 文件。瀏覽您站點(diǎn)的人看不到任何一個(gè)的 PHP 指令,除非您犯了錯(cuò)誤,服務(wù)器把這些 PHP 代碼分割開而沒有先處理它們。 一般情況下會(huì)處理在 ?php 和 ? 之間的常規(guī) HTML 標(biāo)記。請(qǐng)注意上面這個(gè)簡(jiǎn)單的腳本中包含了 br 這個(gè)分行標(biāo)記。如果不能夠很好地利用 HTML 格式,那么 PHP 就不會(huì)非常有用。 如果想和其它東西一起使用,或者您和我一樣是一個(gè)健忘的人,您可能會(huì)想到要注釋代碼。// 字符表明是注釋,服務(wù)器不會(huì)處理被 // 標(biāo)記的內(nèi)容,也不會(huì)象 HTML 中的注釋一樣,把內(nèi)容傳給客戶機(jī)。如果在 ?php 和 ? 標(biāo)記之間有標(biāo)準(zhǔn)的 !-- comment -- ,那么當(dāng)服務(wù)器對(duì)它進(jìn)行語法分析時(shí),有可能引起錯(cuò)誤。顯然,您可能不會(huì)象我對(duì)這個(gè)基本功能一樣注釋您的代碼,但它確是一個(gè)很好的示例。 最后要注意的是,每個(gè) PHP 函數(shù)都封閉在圓括號(hào)內(nèi),并以分號(hào)結(jié)束,這和 C 或 Perl 相似。由于一個(gè)簡(jiǎn)單的印刷錯(cuò)誤而遺漏一個(gè)結(jié)束的圓括號(hào)或分號(hào),造成一些語法錯(cuò)誤是很常見的,所以要確保檢查代碼。在象 Vim 或 Emacs 這樣的編輯器(可以突出顯示語法)中編寫 PHP 是有助于消除此類錯(cuò)誤。它使您能立刻捕捉到錯(cuò)誤。date 函數(shù)僅是內(nèi)置 PHP 函數(shù)之一。PHP 附帶了許多功能可以用于數(shù)據(jù)庫(kù)連接、創(chuàng)建 PDF、Shockwave、JPG、GIF、PNG 和其它圖象文件、發(fā)送電子郵件、閱讀和書寫文件、語法分析 XML、會(huì)話處理、經(jīng)由 HTTP 直接與瀏覽器對(duì)話,以及許多其它功能。PHP 也允許用戶定義自己的函數(shù)。這使 PHP 語言能夠經(jīng)由 Web 提供大量的解決方案。而不是從一開始就把所有的事情都編寫好了。在您編寫函數(shù)之前,確保已經(jīng)查看諸如 Zend.com、PHP Wizard 當(dāng)然還有 Freshmeat,來看是否已經(jīng)有您正在嘗試編寫的函數(shù)(請(qǐng)參閱 參考資料)。 對(duì)于提供標(biāo)題、自動(dòng)更新新聞網(wǎng)站、基于 Web 的電子郵件客戶機(jī)、數(shù)據(jù)庫(kù)管理和其它方面,已經(jīng)有許多開放源碼的 PHP 解決方案。再?gòu)念^來做這些是毫無意義的。相反,應(yīng)該從已經(jīng)構(gòu)建好的基礎(chǔ)開始,并把它定制到您自己的解決方案中。如果您僅僅是初步了解和學(xué)習(xí) PHP,在心中并沒有具體的項(xiàng)目,那么這些項(xiàng)目對(duì)于使用 PHP 仍然是很好的示例和學(xué)習(xí)資料。html教程