php 什么是PEAR?
更新時(shí)間:2009年03月19日 01:10:00 作者:
什么是PEAR?(第一篇)
第一章 愛好PHP者必喜歡PEAR
PHP愛好者必喜歡PEAR,我們的目的就是希望將PEAR介紹給PHP的程式開發(fā)人員,我個(gè)人認(rèn)為引用程式庫的程式開發(fā)方式已經(jīng)漸漸成為趨勢了,除了php、JSP外,像perl、C++也都有專屬的程式庫供其開發(fā)人員引用。
借著引入PEAR,php的程式開發(fā)者除了可以大幅縮減撰寫程式碼的工作與時(shí)間外,還可以用很簡單的方式得到許多強(qiáng)大的動(dòng)態(tài)網(wǎng)頁功能,我將會(huì)列舉許多的實(shí)例,讓大家看了后,一定會(huì)啪掌叫好,並深深的迷上了PEAR。此外,程式碼很容易維護(hù),安全性高也是PEAR另2個(gè)很吸引人的優(yōu)點(diǎn),PAER程式庫宛如模組,可以輕易的抽換與更新,完全不會(huì)影響到其他的程式碼。
我們是從最基本的觀念介紹起,包括PEAR這個(gè)專有名詞的含意? 在那地方取得PEAR套件(package)? 如何使用PEAR套件等?
從第2章起,我們首先介紹PEAR的起源、歷史與特色,讓大家對PEAR有個(gè)基本的認(rèn)識(shí)。
第3章我們將會(huì)介紹PEAR程式庫套件的安裝與管理方法,這一章是非常重要的,在使用PEAR之前,必需先把這些基本功夫?qū)W好,雖然有點(diǎn)復(fù)雜,但是學(xué)會(huì)之后受用無窮,讓您的PHP程式開發(fā)效率倍增,功能隨著遞升。
第4章,是由簡單的范例介紹如何引用PEAR程式庫來開發(fā)PHP程序,讓我們了解PEAR的一般使用方法,也為程式庫的使用建立一個(gè)基本的操作流程。
在第五章我們將介紹幾個(gè)用法簡單又功能強(qiáng)大的程式庫套件的范例,讓大家可以在動(dòng)態(tài)網(wǎng)頁上快速建立一些您以前無法想像而又非??岬墓δ埽屇某淌介_發(fā)功力立刻提高。例如:
◆ 讓網(wǎng)頁可以提供天氣預(yù)報(bào)的功能,增加網(wǎng)頁的附加價(jià)值。
◆ 用很簡單的方法在服務(wù)器上建立網(wǎng)頁的快取(Cache),加快網(wǎng)頁的開啟速度。
◆ 在動(dòng)態(tài)網(wǎng)頁上搜尋某臺(tái)主機(jī)有提供那些PORT號(hào)的服務(wù)。
◆ 在動(dòng)態(tài)網(wǎng)頁上查詢某個(gè)網(wǎng)域名稱(DNS),找出相對應(yīng)的IP。
◆ 動(dòng)態(tài)產(chǎn)生HTML表格。
◆ 快速建立「客戶回函」系統(tǒng),讓網(wǎng)頁瀏覽者可以從網(wǎng)頁上寄信給網(wǎng)站管理員。
◆ 讓網(wǎng)頁可以記錄網(wǎng)頁瀏覽者的行為,也就是做Log。
第6章到第13章,我們會(huì)很詳細(xì)地介紹一些很重要,很常用,但較為復(fù)雜的程式庫套件的使用方法,這幾章都是以套件為介紹的主軸,也就是說,一章只介紹一個(gè)套件,務(wù)求將這幾個(gè)重要套件中較為重要功能,詳細(xì)地介紹給大家。
這些套件(packages)包括:資料庫連線套件、表單制作套件、身份認(rèn)證套件、檔案上傳套件、分頁套件等等。
最后,附錄A會(huì)對PEAR的官方網(wǎng)站做詳細(xì)的介紹,當(dāng)您進(jìn)入PEAR的世界后,您一定會(huì)經(jīng)常來這個(gè)網(wǎng)站尋找資料。知道如何利用官方網(wǎng)站,對于那些PEAR的PHP開發(fā)者而言,是十分重要的。附錄B則會(huì)對PHP的物件導(dǎo)向程式設(shè)計(jì)做簡單的介紹。
喜歡和適合使用PEAR者分類如下:
◆ php愛好者,那一定要用PEAR,因?yàn)樗^對棒極了。
◆ PHP的專業(yè)程式設(shè)計(jì)員。您需要的是程式碼的安全性,可重復(fù)性,以及良好的工作效率,PEAR絕對是必備的。
◆ PHP的程式玩家,想要開發(fā)更有趣的,功能更強(qiáng)的應(yīng)用程式,卻不想被撰寫PHP程式的一些煩惱綁纏,PEAR絕對可以滿足您的要求。
◆ 自己撰寫PHP程式,卻不喜歡每次都要從零開始,一字一字地敲打程式碼,PEAR可以提高您的工作效率。
◆ 您想要學(xué)習(xí)功能性強(qiáng),安全性高的PHP,當(dāng)學(xué)會(huì)了PHP的基本語法后,可以試著使用PEAR。
◆ 您需要量身定造的PHP應(yīng)用程式,換言之,您不喜歡像XOOPS之類的套裝應(yīng)用程式,來試試PEAR吧。
◆ 您需要容易維護(hù)的PHP應(yīng)用程式,不想日后常修改程式碼,或因?yàn)镻HP的改版而將整個(gè)程式重新設(shè)計(jì)。
◆ 您希望您的PHP程式可以物件導(dǎo)向化,方便程式的抽換與模組化。
◆ 您希望您的PHP功力更上一層樓,想要學(xué)習(xí)更多的PHP相關(guān)知識(shí),透過PEAR的使用或觀看PEAR的原始碼,不失為一個(gè)好的學(xué)習(xí)途徑。
PEAR就是專門為有以上這些需求的人所寫的。
使用PEAR就像建一座房子一樣。它是讓您用預(yù)制件的方式,建一棟自己設(shè)計(jì)兼施工的大房子,但卻不需要自己攪拌水泥,自己準(zhǔn)備沙土、石頭,自己燒磁磚.自己做鋁門窗,自己做木工裝飾等等...。
PEAR就像是已經(jīng)針對您的需求所訂制好並準(zhǔn)備好的預(yù)制件,您只需要運(yùn)用創(chuàng)意將他們組合起來就可以了。
我門在使用PEAR來編寫PHP程式時(shí),必需有一個(gè)先決條件,就是必需對PHP的相關(guān)知識(shí)有一定的認(rèn)識(shí)。
若您不知道甚麼是PHP,什麼是Apache、Mysql,或者您雖然知道,卻還不會(huì)PHP的基本語法,那麼,本文章目前並不適合您。建議您快去買些PHP、Apach、Mysql的入門書籍,詳加研讀后,才來看本文章。
大家並不一定要是PHP高手,但一定需要具備看懂基本PHP程序碼的能力。無論如何,首先對PHP的熱愛才是閱讀本書最基本的先決條件。
第二章
PHP有許多的規(guī)范與語法,我們不做介紹,請大家有空去閱讀有關(guān)PHP的書籍,我們重點(diǎn)介紹的是PHP發(fā)展到4.0版以后。加入了物件導(dǎo)向(Object-Oriented Programming Language)的功能,雖然還無法像了Java一樣做到完全的物件導(dǎo)向,但比起前版本PHP3.0已經(jīng)是一大進(jìn)步,也對PHP的程序開發(fā)者提供了更強(qiáng)大與更方便的開發(fā)能力。
PHP 5.0版以上的版本,已經(jīng)轉(zhuǎn)變成為徹底的物件導(dǎo)向化,提供了更多完全物件導(dǎo)向功能。我們所介紹的PEAR程式庫對PHP 4.3.0以上的版本是完全的支援。這一點(diǎn)請大家放心。
為了大多數(shù)人著想,也考慮到PHP向下的相容性,本書的內(nèi)容與范例都可以在PHP 4.3.0版以上的環(huán)境中執(zhí)行,因?yàn)镻EAR完全支援PHP 4.3.0以上的版本,小于PHP 4.3.0版的環(huán)境,PEAR大部分也是支援的,只有小部分不支援。
什么是PHP的物件導(dǎo)向? 物件導(dǎo)向的語法在傳統(tǒng)的PHP程式中較少看到,但若您了解JAVA這種程式語言的話,您應(yīng)該可以知道什麼足物件導(dǎo)向,我會(huì)在附錄B有針對物件導(dǎo)向做簡單的說明。
另外,我要強(qiáng)調(diào)的是:PHP除了基本語法外,內(nèi)建的函式就有超過上千個(gè),橫跨上百種類別,包括文字類函式、數(shù)字類函式、資料庫類、圖形類等等,功能相當(dāng)強(qiáng)大,令人吒舌。但相對於程式開發(fā)者,如何善用這些函式,配合PHP的語法撰寫有效又好管理的程式碼,將會(huì)是一大挑戰(zhàn)。
在今天,有PEAR這個(gè)由全世界眾多頂尖的PHP高手所共同生產(chǎn)的智慧結(jié)晶,可以讓我們輕松又有效率地撰寫程式碼,並克服許多撰寫上的困難。以武俠界的例子來說,用PEAR撰寫PHP就宛如數(shù)百位武林高手灌注他們的功力給程式開發(fā)者。讓程式開發(fā)者不用從最基本的練功,紮馬步練起,借用他們的功力就可以很輕松的讓功力倍增,效率倍增。
說了半天,到底什麼是PEAR?下一個(gè)單元筆者就來做個(gè)介紹。
PEAR這個(gè)字單純就字面上而言意思是「梨子」。
一顆梨子。官方網(wǎng)站的網(wǎng)址為http://pear.php.net
PEAR官方網(wǎng)站的logo中可以看到例子。
PEAR的開始是從1999年11月2l日。有一位名叫Stig S.Bakken的先生,這位仁兄發(fā)起了一個(gè)專案,並號(hào)召許多的PHP高手來共同投入,他首先為這個(gè)專案建立了一些程式碼的基礎(chǔ)規(guī)則,希望PHP的開發(fā)者加入這個(gè)專案時(shí)所撰寫的PHP程式碼都需要遵守這些規(guī)則。
這個(gè)專案名稱就是PEAR,其實(shí)是PHP Extension and Application Repository的縮寫,意即「PHP的延續(xù)與應(yīng)用程式庫」,簡單的說,PEAR其實(shí)是一個(gè)PHP的程式庫。
Bakken先生建立的程式碼基礎(chǔ)如下,我只概略說明一下,並不詳談細(xì)節(jié)的部分:
◆ 如果開發(fā)者要提供PHP程式庫,程式的結(jié)構(gòu)必須物件化。
◆ 程式的縮排要遵循一定的格式
◆ 程式中類別的命名也要遵循一定的格式
◆ 程式碼的註解要有一定的格式
◆ 檔案命名要有一定的格式
◆ 程式庫撰寫完成后要包裝成套件,而套件的包裝與安裝方式,也有一定的格式。
該專案歡迎所有的PHP開發(fā)者來共同開發(fā)PHP程式庫,只要他們愿意遵守上述的程式碼基礎(chǔ)規(guī)則。Bakken先生並組織了一組團(tuán)隊(duì)作為這個(gè)專案的控制主體,負(fù)責(zé)審核所有參與專案的開發(fā)者所提供的程式庫,若通過審核,就將程式庫分類並放入官方網(wǎng)站中供其他開發(fā)者下載使用,另外,這個(gè)團(tuán)體也負(fù)責(zé)維護(hù)官方網(wǎng)站的維護(hù)與更新。
有些人可能會(huì)很好奇,為什麼有人會(huì)愿意免費(fèi)撰寫程式庫讓別人來使用呀? 這就是開放原碼世界的精神一互助、共享。試想,若每個(gè)開發(fā)者針對自己專精的部分開發(fā)程式庫給其他人使用,同時(shí)也享用別的開發(fā)者所釋出的程式庫,是不是可以達(dá)到互助的目的,讓每一個(gè)開發(fā)者共享所有的開發(fā)者的成果.不必所有的程式碼都要自己撰寫。
更棒的是,這些程式庫是免費(fèi)開放給全世界的人使用的,不只參與程式庫開發(fā)的開發(fā)者可以享用(這種作法與Java或perl提供函式庫的作法是一樣的)。
因此,全世界所有的PHP開發(fā)者可以省去許多撰寫程式碼的時(shí)間,又因?yàn)槭褂贸淌綆斓拈_發(fā)者可以回報(bào)程式庫的缺失給原開發(fā)者,原開發(fā)者也因此會(huì)不斷的修正這些程式庫,所以程式碼相對安全。另外,程式庫開發(fā)者也會(huì)隨著時(shí)代演進(jìn),加入新的功能到程式庫中,讓程式庫的使用者可以與時(shí)俱進(jìn)。
詳細(xì)情況可參閱PEAR的官方網(wǎng)站中所提到關(guān)於開發(fā)PEAR的目的說明:http://pear.php.net/manual/en/about-pear.php。我建議您有時(shí)間慢慢地看吧,繼續(xù)將本文章看下去,您就會(huì)慢慢了解PEAR的神奇之處了。
我在文章的最后有一章附錄:PEAR官方網(wǎng)站的介紹,大家可以先參考一下。
如果您還不太了解我介紹所謂「程式庫」的意思,沒關(guān)系,下一節(jié)就會(huì)透過實(shí)際的例子加以說明。
2-3 所有套件簡介
▓ 程式庫VS套件
介紹所有套件之前,我們必須釐清兩個(gè)名詞,以免讀者混淆了,一個(gè)就是「程式庫」,另外一個(gè)就是「套件」。
假如我是是一個(gè)PHP的開發(fā)者,發(fā)展了一個(gè)可以處理所有資料庫存取「程式庫」,並想將這個(gè)程式庫加入PEAR分享給全世界使用。當(dāng)我撰寫完理資料庫的程式庫后,我必須按照PEAR的規(guī)定,將程式庫壓縮成一個(gè)「件」檔,放在PEAR官方網(wǎng)站供所有人下載,也由於遵循PEAR的規(guī)定來壓縮檔案,這個(gè)套件就可以用PEAR的套件管理指令來安裝或管理,這對PEAR使用者而言是相當(dāng)便利的,關(guān)於套件管理指令,我會(huì)在下一章做完整的說明經(jīng)過上述的說明,相信讀者應(yīng)該了解何謂「程式庫」、何謂「套件」?其實(shí),簡單的說,把程式庫包裝好就變成了套件。
▓ 套件與分類
PEAR截至目前為止釋出的套件已高達(dá)三百多個(gè),共分為35大類,而且不斷增加中。大家可以想像全世界的頂尖PHP開發(fā)者的結(jié)合,是一股多大的團(tuán)結(jié)力量。下圖是官方網(wǎng)站中套件的分類:
PEAR因?yàn)獒尦龅奶准嗔?,為了管理上的方便所以依套件的功能將套件做分類,同一類的套件在效果上都有相關(guān)性,但提供的功能卻不盡相同小接下來,我將所有的分類用表格的方式做一個(gè)簡單的介紹,讓大家多了解一下PEAR套件可以提供哪些功能。
這麼多的分類,每一類都會(huì)依功能的不同發(fā)展出不同的套件。以第一個(gè)認(rèn)證類為例,若您到官方網(wǎng)站去看,會(huì)發(fā)現(xiàn)目前該類中共有8個(gè)套件
這8個(gè)套件都是與身份認(rèn)證有相關(guān)的套件,如果您想要網(wǎng)頁具有身份認(rèn)證功能,例如,可以讓網(wǎng)頁瀏覽者註冊、輸入帳號(hào)密碼、判別身份、給予權(quán)限等等。就會(huì)需要用到這些套件。
我再補(bǔ)充一點(diǎn):有些套件已發(fā)展成熟,開發(fā)者會(huì)將它稱為穩(wěn)定(stable)版,但若程式庫尚在發(fā)展中,但也已經(jīng)可以使用,開發(fā)者將它釋出,通常會(huì)稱為測試版(alpha or beta)版。官方網(wǎng)站也會(huì)記錄套件的開發(fā)者與維護(hù)者的姓名,有時(shí)候一個(gè)套件是由許多人共同開發(fā)而成的。
這些套件的訊息都可在PEAR的官方網(wǎng)站中找到,我在附錄〈PEAR官方網(wǎng)站的介紹〉會(huì)介紹如何使用PEAR官方網(wǎng)站。
2-4 使用PEAR程式庫的簡單范例
在這一節(jié)中,我用l個(gè)簡單的范例來說明程式庫的使用。
假設(shè)您想要制作一個(gè)網(wǎng)頁,並且希望知道網(wǎng)頁執(zhí)行時(shí)所耗用的時(shí)間,則可以借用PEAR所釋出的名為Benchmark的程式庫。這個(gè)程式庫開發(fā)出來的目的就是用來計(jì)算網(wǎng)頁的執(zhí)行時(shí)間。
首先,先將Benchmark程式庫套件安裝好(安裝方法請參考下一章)。接著我們就可以開始撰寫網(wǎng)頁了,例如:我們建立了一個(gè)名為show.php的網(wǎng)頁。
基於說明上的方便,我在每一行程式前面加上行號(hào),大家實(shí)際上撰寫程式時(shí)是不用加上行號(hào)的。
第1行與第2行的程式碼首先引用Benchmark套件中的Timer.php網(wǎng)頁,這個(gè)網(wǎng)頁內(nèi)含計(jì)算綱頁執(zhí)行時(shí)間的程式庫。include_once可以將某一個(gè)外部的網(wǎng)頁放到這個(gè)綱頁來,我稱這個(gè)動(dòng)作叫做「引用」, 本例相當(dāng)於執(zhí)行了Timer.php與show.php兩個(gè)網(wǎng)頁。
第3行,用new關(guān)鍵字建立一個(gè)Benchmark_Timer物件,並將該物件放入名為$timer的變數(shù)中。接著使用細(xì)$timer物件的start( )方法啟動(dòng)時(shí)鐘,然后加上我自己的程式碼,此例中是一行簡單的程式。
接著就是要結(jié)束時(shí)鐘的計(jì)時(shí),計(jì)算網(wǎng)頁執(zhí)行所花費(fèi)的時(shí)間並將它顯示出來。第8行先用$timer物件的stop( )方法來停止時(shí)鐘,並用第9行$timer物件的timeElapsed( )方法計(jì)算時(shí)鐘從啟動(dòng)到停止中間的時(shí)間差,並將計(jì)算結(jié)果放入$totaltime變數(shù)中。
最后用echo函式顯示時(shí)間差在網(wǎng)頁上。
由結(jié)果可清楚看到show.php網(wǎng)頁從開始執(zhí)行到執(zhí)行完畢總共花了0.00013613700866699秒,以后可以借由觀察這個(gè)數(shù)字來判斷系統(tǒng)效能,或做為程式碼改進(jìn)的參考。如何,執(zhí)行時(shí)間的計(jì)算是不是方便、快速又神奇呢!
如果您需要在其他網(wǎng)頁上也可以有計(jì)算網(wǎng)頁的執(zhí)行時(shí)間的功能,只要用上述方式套用在其他PHP網(wǎng)頁上就可以了。
事實(shí)上,其他套件的使用方式也跟這個(gè)套件的使用方式大同小異.差別只是在每個(gè)套件所提供的類別、方法以及使用的參數(shù)各有不同而已。
套件雖然好用,但相信讀者還是有許多的疑惑? 例如:
1. Benchmark程式庫套件是怎麼來的?要有哪些前置工作才可以使用它?
2. 我是如何知道使用Benchmark套件的方法?
第1個(gè)問題牽涉到如何安裝PEAR套件,以及安裝后套件的管理、升級、刪除等問題,我會(huì)在第3章加以介紹。第2個(gè)問題,筆者會(huì)在第4章針對如何使用套件、如何得到套件的資訊等做一個(gè)詳細(xì)的說明。
2-5 為何要用PEAR
為何要使用PEAR? 我根據(jù)自己的心得,歸納出以下幾點(diǎn):
1. 省時(shí)省力:許多程式碼都被撰寫在程式庫中,開發(fā)者只需引用含程式庫的PHP檔,就可以擁有程式庫所提供的功能,省去自行撰寫的時(shí)間與精力。
2. 安全:由於這些程式庫套件都將原始碼公開,使用者若發(fā)現(xiàn)bug,可以立即向套件的開發(fā)者反映,開發(fā)者通常也會(huì)立即加以修正,讓程式庫的錯(cuò)誤減到最小。
3. 容易維護(hù):自行撰寫的程式碼與PEAR程式庫的程式碼分開,若PEAR套件因?yàn)橛行鹿δ鼙婚_發(fā)或修正錯(cuò)誤而釋出新版本,只需更新套件即可,完全不會(huì)動(dòng)到自行撰寫的程式碼。
4. 功能強(qiáng)大:PEAR套件所提供的功能非常之多,除了一般常用功能如:資料庫的連結(jié)、設(shè)定檔的處理、身份的認(rèn)證、以及表單的處理。另外,較為進(jìn)階的功能,例如像網(wǎng)路郵局、網(wǎng)路管理、動(dòng)態(tài)方式產(chǎn)生圖形、RSS、Wiki,或者像phpBB的BBCode解析等等都可簡單做到。
5. 讓網(wǎng)頁的程式開發(fā)與版面設(shè)計(jì)分開:PEAR提供許多樣板的程式庫,可讓程式開發(fā)與版面設(shè)計(jì)分開,方便於程式開發(fā)者與網(wǎng)頁設(shè)計(jì)者分工合作。
6. 對學(xué)習(xí)PHP者是一套絕佳的學(xué)習(xí)范例:程式庫的註解說明十分詳細(xì),程式碼的撰寫,具有一定的規(guī)則與格式,而且完全物質(zhì)化,讓開發(fā)者容易看懂並學(xué)習(xí)。有些套件還內(nèi)附教學(xué)文件與范例擋,最重要的是:你不用花半毛錢就可得到,我們應(yīng)該感謝套件的作者們,他們?yōu)槲覀兏冻隽藷o私的貢獻(xiàn)。
2-6 為什么要建立PEAR社團(tuán)
是什麼原因促使全世界的PHP開發(fā)者大團(tuán)結(jié),共同開發(fā)出PEAR這個(gè)程式寶庫呢? 我就認(rèn)為有以下幾個(gè)原因:
1.遭受其他競爭者的強(qiáng)大競爭:這一點(diǎn)第1章已經(jīng)說明過了。
2.PHP的物質(zhì)化:從PHP4加入物質(zhì)導(dǎo)向的功能后,PHP5更是進(jìn)一步物質(zhì)化。除了要與ASP.NET、JSP一拼外,就是方便於程式的模組化,讓程式庫的開發(fā)可以進(jìn)行,有了物質(zhì)化的功能,程式庫才可以與開發(fā)者自行撰寫的程式碼切割。
3.開發(fā)者的共同需求:如果每一次開發(fā)PHP程式,都要從無到有完全自己來,雖然可以鍛鍊程式功力,但卻沒有效率,也不甚經(jīng)濟(jì)。若一些常用的功能可以用程式庫的方式來處理,將可以解決許多開發(fā)者的困難?;哆@種所有開發(fā)者都共同擁有的需求,讓這些PHP的開發(fā)者分工合作,共同發(fā)展程式庫,幫助自己也幫助別人。
2-7 PHP的競爭者與優(yōu)缺點(diǎn)
PHP是在1994年發(fā)展出來的,經(jīng)過四次主要的改寫,成為我們今天所看到的可以廣泛應(yīng)用且成熟的產(chǎn)品。到2005年四月為止,PHP已經(jīng)運(yùn)用於全球超過1900萬個(gè)網(wǎng)站上,而且這個(gè)數(shù)字還在持續(xù)快速成長中。
PHP與他們的競爭對手相比,他具有以下優(yōu)勢:
高效能:不是我黃婆賣瓜,哈哈。.., 我閱覽過許多Asp.NET與Jsp的網(wǎng)頁,效能上實(shí)在無法與PHP相比。(Asp.NET與Jsp的使用者應(yīng)該不會(huì)看這篇文章吧)。
● 可以與許多不同的資料庫系統(tǒng)相連結(jié):其他的競爭者也可以,但沒有PHP快。
● 易學(xué)易用:PHP的程式碼的寫法非常直覺,容易學(xué)習(xí)。
● 支援物件導(dǎo)向:這方面Jsp是強(qiáng)項(xiàng),但PHP5已經(jīng)追上來了。
● 低成本:根本不用錢。
● 內(nèi)建非常多的函式庫:記得筆者以前使用Asp,內(nèi)建的函式庫實(shí)在少的可憐。
● 開放原始碼:安全性會(huì)比沒有開放的高。
● PEAR程式庫:這是最近的強(qiáng)力武器,用來與強(qiáng)敵們一爭長短。
● 可攜性:無論是各類Unix作業(yè)系統(tǒng),如:Linux,F(xiàn)reeBSD,商業(yè)版Unix或Windows作業(yè)系統(tǒng)都可以使用PHP。
Asp.NET與Jsp當(dāng)然也有他們獨(dú)特的優(yōu)點(diǎn)? 例如,Jsp夾帶JAVA強(qiáng)大的功能,它就可以呈現(xiàn)一些目前PHP無法做到的效果。所以Jsp也吸引了許多的使用者,但筆者對Jsp目前的效能實(shí)在還不甚滿意,相反地,對PHP的快速度滿意的不得了。
使用哪一種程式,就由您自行做明確的抉擇,不過,若您選擇觀看文章,相信我們應(yīng)該都是同道中人,PHP的愛好者。
總而言之,許多PHP高手共同構(gòu)筑了一個(gè)強(qiáng)大的支援網(wǎng),若您是PHP的程式開發(fā)者,卻對這些高手的好意毫不領(lǐng)情,那不是太可惜了嗎?
借著引入PEAR,php的程式開發(fā)者除了可以大幅縮減撰寫程式碼的工作與時(shí)間外,還可以用很簡單的方式得到許多強(qiáng)大的動(dòng)態(tài)網(wǎng)頁功能,我將會(huì)列舉許多的實(shí)例,讓大家看了后,一定會(huì)啪掌叫好,並深深的迷上了PEAR。此外,程式碼很容易維護(hù),安全性高也是PEAR另2個(gè)很吸引人的優(yōu)點(diǎn),PAER程式庫宛如模組,可以輕易的抽換與更新,完全不會(huì)影響到其他的程式碼。
我們是從最基本的觀念介紹起,包括PEAR這個(gè)專有名詞的含意? 在那地方取得PEAR套件(package)? 如何使用PEAR套件等?
從第2章起,我們首先介紹PEAR的起源、歷史與特色,讓大家對PEAR有個(gè)基本的認(rèn)識(shí)。
第3章我們將會(huì)介紹PEAR程式庫套件的安裝與管理方法,這一章是非常重要的,在使用PEAR之前,必需先把這些基本功夫?qū)W好,雖然有點(diǎn)復(fù)雜,但是學(xué)會(huì)之后受用無窮,讓您的PHP程式開發(fā)效率倍增,功能隨著遞升。
第4章,是由簡單的范例介紹如何引用PEAR程式庫來開發(fā)PHP程序,讓我們了解PEAR的一般使用方法,也為程式庫的使用建立一個(gè)基本的操作流程。
在第五章我們將介紹幾個(gè)用法簡單又功能強(qiáng)大的程式庫套件的范例,讓大家可以在動(dòng)態(tài)網(wǎng)頁上快速建立一些您以前無法想像而又非??岬墓δ埽屇某淌介_發(fā)功力立刻提高。例如:
◆ 讓網(wǎng)頁可以提供天氣預(yù)報(bào)的功能,增加網(wǎng)頁的附加價(jià)值。
◆ 用很簡單的方法在服務(wù)器上建立網(wǎng)頁的快取(Cache),加快網(wǎng)頁的開啟速度。
◆ 在動(dòng)態(tài)網(wǎng)頁上搜尋某臺(tái)主機(jī)有提供那些PORT號(hào)的服務(wù)。
◆ 在動(dòng)態(tài)網(wǎng)頁上查詢某個(gè)網(wǎng)域名稱(DNS),找出相對應(yīng)的IP。
◆ 動(dòng)態(tài)產(chǎn)生HTML表格。
◆ 快速建立「客戶回函」系統(tǒng),讓網(wǎng)頁瀏覽者可以從網(wǎng)頁上寄信給網(wǎng)站管理員。
◆ 讓網(wǎng)頁可以記錄網(wǎng)頁瀏覽者的行為,也就是做Log。
第6章到第13章,我們會(huì)很詳細(xì)地介紹一些很重要,很常用,但較為復(fù)雜的程式庫套件的使用方法,這幾章都是以套件為介紹的主軸,也就是說,一章只介紹一個(gè)套件,務(wù)求將這幾個(gè)重要套件中較為重要功能,詳細(xì)地介紹給大家。
這些套件(packages)包括:資料庫連線套件、表單制作套件、身份認(rèn)證套件、檔案上傳套件、分頁套件等等。
最后,附錄A會(huì)對PEAR的官方網(wǎng)站做詳細(xì)的介紹,當(dāng)您進(jìn)入PEAR的世界后,您一定會(huì)經(jīng)常來這個(gè)網(wǎng)站尋找資料。知道如何利用官方網(wǎng)站,對于那些PEAR的PHP開發(fā)者而言,是十分重要的。附錄B則會(huì)對PHP的物件導(dǎo)向程式設(shè)計(jì)做簡單的介紹。
喜歡和適合使用PEAR者分類如下:
◆ php愛好者,那一定要用PEAR,因?yàn)樗^對棒極了。
◆ PHP的專業(yè)程式設(shè)計(jì)員。您需要的是程式碼的安全性,可重復(fù)性,以及良好的工作效率,PEAR絕對是必備的。
◆ PHP的程式玩家,想要開發(fā)更有趣的,功能更強(qiáng)的應(yīng)用程式,卻不想被撰寫PHP程式的一些煩惱綁纏,PEAR絕對可以滿足您的要求。
◆ 自己撰寫PHP程式,卻不喜歡每次都要從零開始,一字一字地敲打程式碼,PEAR可以提高您的工作效率。
◆ 您想要學(xué)習(xí)功能性強(qiáng),安全性高的PHP,當(dāng)學(xué)會(huì)了PHP的基本語法后,可以試著使用PEAR。
◆ 您需要量身定造的PHP應(yīng)用程式,換言之,您不喜歡像XOOPS之類的套裝應(yīng)用程式,來試試PEAR吧。
◆ 您需要容易維護(hù)的PHP應(yīng)用程式,不想日后常修改程式碼,或因?yàn)镻HP的改版而將整個(gè)程式重新設(shè)計(jì)。
◆ 您希望您的PHP程式可以物件導(dǎo)向化,方便程式的抽換與模組化。
◆ 您希望您的PHP功力更上一層樓,想要學(xué)習(xí)更多的PHP相關(guān)知識(shí),透過PEAR的使用或觀看PEAR的原始碼,不失為一個(gè)好的學(xué)習(xí)途徑。
PEAR就是專門為有以上這些需求的人所寫的。
使用PEAR就像建一座房子一樣。它是讓您用預(yù)制件的方式,建一棟自己設(shè)計(jì)兼施工的大房子,但卻不需要自己攪拌水泥,自己準(zhǔn)備沙土、石頭,自己燒磁磚.自己做鋁門窗,自己做木工裝飾等等...。
PEAR就像是已經(jīng)針對您的需求所訂制好並準(zhǔn)備好的預(yù)制件,您只需要運(yùn)用創(chuàng)意將他們組合起來就可以了。
我門在使用PEAR來編寫PHP程式時(shí),必需有一個(gè)先決條件,就是必需對PHP的相關(guān)知識(shí)有一定的認(rèn)識(shí)。
若您不知道甚麼是PHP,什麼是Apache、Mysql,或者您雖然知道,卻還不會(huì)PHP的基本語法,那麼,本文章目前並不適合您。建議您快去買些PHP、Apach、Mysql的入門書籍,詳加研讀后,才來看本文章。
大家並不一定要是PHP高手,但一定需要具備看懂基本PHP程序碼的能力。無論如何,首先對PHP的熱愛才是閱讀本書最基本的先決條件。
第二章
PHP有許多的規(guī)范與語法,我們不做介紹,請大家有空去閱讀有關(guān)PHP的書籍,我們重點(diǎn)介紹的是PHP發(fā)展到4.0版以后。加入了物件導(dǎo)向(Object-Oriented Programming Language)的功能,雖然還無法像了Java一樣做到完全的物件導(dǎo)向,但比起前版本PHP3.0已經(jīng)是一大進(jìn)步,也對PHP的程序開發(fā)者提供了更強(qiáng)大與更方便的開發(fā)能力。
PHP 5.0版以上的版本,已經(jīng)轉(zhuǎn)變成為徹底的物件導(dǎo)向化,提供了更多完全物件導(dǎo)向功能。我們所介紹的PEAR程式庫對PHP 4.3.0以上的版本是完全的支援。這一點(diǎn)請大家放心。
為了大多數(shù)人著想,也考慮到PHP向下的相容性,本書的內(nèi)容與范例都可以在PHP 4.3.0版以上的環(huán)境中執(zhí)行,因?yàn)镻EAR完全支援PHP 4.3.0以上的版本,小于PHP 4.3.0版的環(huán)境,PEAR大部分也是支援的,只有小部分不支援。
什么是PHP的物件導(dǎo)向? 物件導(dǎo)向的語法在傳統(tǒng)的PHP程式中較少看到,但若您了解JAVA這種程式語言的話,您應(yīng)該可以知道什麼足物件導(dǎo)向,我會(huì)在附錄B有針對物件導(dǎo)向做簡單的說明。
另外,我要強(qiáng)調(diào)的是:PHP除了基本語法外,內(nèi)建的函式就有超過上千個(gè),橫跨上百種類別,包括文字類函式、數(shù)字類函式、資料庫類、圖形類等等,功能相當(dāng)強(qiáng)大,令人吒舌。但相對於程式開發(fā)者,如何善用這些函式,配合PHP的語法撰寫有效又好管理的程式碼,將會(huì)是一大挑戰(zhàn)。
在今天,有PEAR這個(gè)由全世界眾多頂尖的PHP高手所共同生產(chǎn)的智慧結(jié)晶,可以讓我們輕松又有效率地撰寫程式碼,並克服許多撰寫上的困難。以武俠界的例子來說,用PEAR撰寫PHP就宛如數(shù)百位武林高手灌注他們的功力給程式開發(fā)者。讓程式開發(fā)者不用從最基本的練功,紮馬步練起,借用他們的功力就可以很輕松的讓功力倍增,效率倍增。
說了半天,到底什麼是PEAR?下一個(gè)單元筆者就來做個(gè)介紹。
PEAR這個(gè)字單純就字面上而言意思是「梨子」。
一顆梨子。官方網(wǎng)站的網(wǎng)址為http://pear.php.net
PEAR官方網(wǎng)站的logo中可以看到例子。
PEAR的開始是從1999年11月2l日。有一位名叫Stig S.Bakken的先生,這位仁兄發(fā)起了一個(gè)專案,並號(hào)召許多的PHP高手來共同投入,他首先為這個(gè)專案建立了一些程式碼的基礎(chǔ)規(guī)則,希望PHP的開發(fā)者加入這個(gè)專案時(shí)所撰寫的PHP程式碼都需要遵守這些規(guī)則。
這個(gè)專案名稱就是PEAR,其實(shí)是PHP Extension and Application Repository的縮寫,意即「PHP的延續(xù)與應(yīng)用程式庫」,簡單的說,PEAR其實(shí)是一個(gè)PHP的程式庫。
Bakken先生建立的程式碼基礎(chǔ)如下,我只概略說明一下,並不詳談細(xì)節(jié)的部分:
◆ 如果開發(fā)者要提供PHP程式庫,程式的結(jié)構(gòu)必須物件化。
◆ 程式的縮排要遵循一定的格式
◆ 程式中類別的命名也要遵循一定的格式
◆ 程式碼的註解要有一定的格式
◆ 檔案命名要有一定的格式
◆ 程式庫撰寫完成后要包裝成套件,而套件的包裝與安裝方式,也有一定的格式。
該專案歡迎所有的PHP開發(fā)者來共同開發(fā)PHP程式庫,只要他們愿意遵守上述的程式碼基礎(chǔ)規(guī)則。Bakken先生並組織了一組團(tuán)隊(duì)作為這個(gè)專案的控制主體,負(fù)責(zé)審核所有參與專案的開發(fā)者所提供的程式庫,若通過審核,就將程式庫分類並放入官方網(wǎng)站中供其他開發(fā)者下載使用,另外,這個(gè)團(tuán)體也負(fù)責(zé)維護(hù)官方網(wǎng)站的維護(hù)與更新。
有些人可能會(huì)很好奇,為什麼有人會(huì)愿意免費(fèi)撰寫程式庫讓別人來使用呀? 這就是開放原碼世界的精神一互助、共享。試想,若每個(gè)開發(fā)者針對自己專精的部分開發(fā)程式庫給其他人使用,同時(shí)也享用別的開發(fā)者所釋出的程式庫,是不是可以達(dá)到互助的目的,讓每一個(gè)開發(fā)者共享所有的開發(fā)者的成果.不必所有的程式碼都要自己撰寫。
更棒的是,這些程式庫是免費(fèi)開放給全世界的人使用的,不只參與程式庫開發(fā)的開發(fā)者可以享用(這種作法與Java或perl提供函式庫的作法是一樣的)。
因此,全世界所有的PHP開發(fā)者可以省去許多撰寫程式碼的時(shí)間,又因?yàn)槭褂贸淌綆斓拈_發(fā)者可以回報(bào)程式庫的缺失給原開發(fā)者,原開發(fā)者也因此會(huì)不斷的修正這些程式庫,所以程式碼相對安全。另外,程式庫開發(fā)者也會(huì)隨著時(shí)代演進(jìn),加入新的功能到程式庫中,讓程式庫的使用者可以與時(shí)俱進(jìn)。
詳細(xì)情況可參閱PEAR的官方網(wǎng)站中所提到關(guān)於開發(fā)PEAR的目的說明:http://pear.php.net/manual/en/about-pear.php。我建議您有時(shí)間慢慢地看吧,繼續(xù)將本文章看下去,您就會(huì)慢慢了解PEAR的神奇之處了。
我在文章的最后有一章附錄:PEAR官方網(wǎng)站的介紹,大家可以先參考一下。
如果您還不太了解我介紹所謂「程式庫」的意思,沒關(guān)系,下一節(jié)就會(huì)透過實(shí)際的例子加以說明。
2-3 所有套件簡介
▓ 程式庫VS套件
介紹所有套件之前,我們必須釐清兩個(gè)名詞,以免讀者混淆了,一個(gè)就是「程式庫」,另外一個(gè)就是「套件」。
假如我是是一個(gè)PHP的開發(fā)者,發(fā)展了一個(gè)可以處理所有資料庫存取「程式庫」,並想將這個(gè)程式庫加入PEAR分享給全世界使用。當(dāng)我撰寫完理資料庫的程式庫后,我必須按照PEAR的規(guī)定,將程式庫壓縮成一個(gè)「件」檔,放在PEAR官方網(wǎng)站供所有人下載,也由於遵循PEAR的規(guī)定來壓縮檔案,這個(gè)套件就可以用PEAR的套件管理指令來安裝或管理,這對PEAR使用者而言是相當(dāng)便利的,關(guān)於套件管理指令,我會(huì)在下一章做完整的說明經(jīng)過上述的說明,相信讀者應(yīng)該了解何謂「程式庫」、何謂「套件」?其實(shí),簡單的說,把程式庫包裝好就變成了套件。
▓ 套件與分類
PEAR截至目前為止釋出的套件已高達(dá)三百多個(gè),共分為35大類,而且不斷增加中。大家可以想像全世界的頂尖PHP開發(fā)者的結(jié)合,是一股多大的團(tuán)結(jié)力量。下圖是官方網(wǎng)站中套件的分類:
PEAR因?yàn)獒尦龅奶准嗔?,為了管理上的方便所以依套件的功能將套件做分類,同一類的套件在效果上都有相關(guān)性,但提供的功能卻不盡相同小接下來,我將所有的分類用表格的方式做一個(gè)簡單的介紹,讓大家多了解一下PEAR套件可以提供哪些功能。
這麼多的分類,每一類都會(huì)依功能的不同發(fā)展出不同的套件。以第一個(gè)認(rèn)證類為例,若您到官方網(wǎng)站去看,會(huì)發(fā)現(xiàn)目前該類中共有8個(gè)套件
這8個(gè)套件都是與身份認(rèn)證有相關(guān)的套件,如果您想要網(wǎng)頁具有身份認(rèn)證功能,例如,可以讓網(wǎng)頁瀏覽者註冊、輸入帳號(hào)密碼、判別身份、給予權(quán)限等等。就會(huì)需要用到這些套件。
我再補(bǔ)充一點(diǎn):有些套件已發(fā)展成熟,開發(fā)者會(huì)將它稱為穩(wěn)定(stable)版,但若程式庫尚在發(fā)展中,但也已經(jīng)可以使用,開發(fā)者將它釋出,通常會(huì)稱為測試版(alpha or beta)版。官方網(wǎng)站也會(huì)記錄套件的開發(fā)者與維護(hù)者的姓名,有時(shí)候一個(gè)套件是由許多人共同開發(fā)而成的。
這些套件的訊息都可在PEAR的官方網(wǎng)站中找到,我在附錄〈PEAR官方網(wǎng)站的介紹〉會(huì)介紹如何使用PEAR官方網(wǎng)站。
2-4 使用PEAR程式庫的簡單范例
在這一節(jié)中,我用l個(gè)簡單的范例來說明程式庫的使用。
假設(shè)您想要制作一個(gè)網(wǎng)頁,並且希望知道網(wǎng)頁執(zhí)行時(shí)所耗用的時(shí)間,則可以借用PEAR所釋出的名為Benchmark的程式庫。這個(gè)程式庫開發(fā)出來的目的就是用來計(jì)算網(wǎng)頁的執(zhí)行時(shí)間。
首先,先將Benchmark程式庫套件安裝好(安裝方法請參考下一章)。接著我們就可以開始撰寫網(wǎng)頁了,例如:我們建立了一個(gè)名為show.php的網(wǎng)頁。
基於說明上的方便,我在每一行程式前面加上行號(hào),大家實(shí)際上撰寫程式時(shí)是不用加上行號(hào)的。
第1行與第2行的程式碼首先引用Benchmark套件中的Timer.php網(wǎng)頁,這個(gè)網(wǎng)頁內(nèi)含計(jì)算綱頁執(zhí)行時(shí)間的程式庫。include_once可以將某一個(gè)外部的網(wǎng)頁放到這個(gè)綱頁來,我稱這個(gè)動(dòng)作叫做「引用」, 本例相當(dāng)於執(zhí)行了Timer.php與show.php兩個(gè)網(wǎng)頁。
第3行,用new關(guān)鍵字建立一個(gè)Benchmark_Timer物件,並將該物件放入名為$timer的變數(shù)中。接著使用細(xì)$timer物件的start( )方法啟動(dòng)時(shí)鐘,然后加上我自己的程式碼,此例中是一行簡單的程式。
接著就是要結(jié)束時(shí)鐘的計(jì)時(shí),計(jì)算網(wǎng)頁執(zhí)行所花費(fèi)的時(shí)間並將它顯示出來。第8行先用$timer物件的stop( )方法來停止時(shí)鐘,並用第9行$timer物件的timeElapsed( )方法計(jì)算時(shí)鐘從啟動(dòng)到停止中間的時(shí)間差,並將計(jì)算結(jié)果放入$totaltime變數(shù)中。
最后用echo函式顯示時(shí)間差在網(wǎng)頁上。
由結(jié)果可清楚看到show.php網(wǎng)頁從開始執(zhí)行到執(zhí)行完畢總共花了0.00013613700866699秒,以后可以借由觀察這個(gè)數(shù)字來判斷系統(tǒng)效能,或做為程式碼改進(jìn)的參考。如何,執(zhí)行時(shí)間的計(jì)算是不是方便、快速又神奇呢!
如果您需要在其他網(wǎng)頁上也可以有計(jì)算網(wǎng)頁的執(zhí)行時(shí)間的功能,只要用上述方式套用在其他PHP網(wǎng)頁上就可以了。
事實(shí)上,其他套件的使用方式也跟這個(gè)套件的使用方式大同小異.差別只是在每個(gè)套件所提供的類別、方法以及使用的參數(shù)各有不同而已。
套件雖然好用,但相信讀者還是有許多的疑惑? 例如:
1. Benchmark程式庫套件是怎麼來的?要有哪些前置工作才可以使用它?
2. 我是如何知道使用Benchmark套件的方法?
第1個(gè)問題牽涉到如何安裝PEAR套件,以及安裝后套件的管理、升級、刪除等問題,我會(huì)在第3章加以介紹。第2個(gè)問題,筆者會(huì)在第4章針對如何使用套件、如何得到套件的資訊等做一個(gè)詳細(xì)的說明。
2-5 為何要用PEAR
為何要使用PEAR? 我根據(jù)自己的心得,歸納出以下幾點(diǎn):
1. 省時(shí)省力:許多程式碼都被撰寫在程式庫中,開發(fā)者只需引用含程式庫的PHP檔,就可以擁有程式庫所提供的功能,省去自行撰寫的時(shí)間與精力。
2. 安全:由於這些程式庫套件都將原始碼公開,使用者若發(fā)現(xiàn)bug,可以立即向套件的開發(fā)者反映,開發(fā)者通常也會(huì)立即加以修正,讓程式庫的錯(cuò)誤減到最小。
3. 容易維護(hù):自行撰寫的程式碼與PEAR程式庫的程式碼分開,若PEAR套件因?yàn)橛行鹿δ鼙婚_發(fā)或修正錯(cuò)誤而釋出新版本,只需更新套件即可,完全不會(huì)動(dòng)到自行撰寫的程式碼。
4. 功能強(qiáng)大:PEAR套件所提供的功能非常之多,除了一般常用功能如:資料庫的連結(jié)、設(shè)定檔的處理、身份的認(rèn)證、以及表單的處理。另外,較為進(jìn)階的功能,例如像網(wǎng)路郵局、網(wǎng)路管理、動(dòng)態(tài)方式產(chǎn)生圖形、RSS、Wiki,或者像phpBB的BBCode解析等等都可簡單做到。
5. 讓網(wǎng)頁的程式開發(fā)與版面設(shè)計(jì)分開:PEAR提供許多樣板的程式庫,可讓程式開發(fā)與版面設(shè)計(jì)分開,方便於程式開發(fā)者與網(wǎng)頁設(shè)計(jì)者分工合作。
6. 對學(xué)習(xí)PHP者是一套絕佳的學(xué)習(xí)范例:程式庫的註解說明十分詳細(xì),程式碼的撰寫,具有一定的規(guī)則與格式,而且完全物質(zhì)化,讓開發(fā)者容易看懂並學(xué)習(xí)。有些套件還內(nèi)附教學(xué)文件與范例擋,最重要的是:你不用花半毛錢就可得到,我們應(yīng)該感謝套件的作者們,他們?yōu)槲覀兏冻隽藷o私的貢獻(xiàn)。
2-6 為什么要建立PEAR社團(tuán)
是什麼原因促使全世界的PHP開發(fā)者大團(tuán)結(jié),共同開發(fā)出PEAR這個(gè)程式寶庫呢? 我就認(rèn)為有以下幾個(gè)原因:
1.遭受其他競爭者的強(qiáng)大競爭:這一點(diǎn)第1章已經(jīng)說明過了。
2.PHP的物質(zhì)化:從PHP4加入物質(zhì)導(dǎo)向的功能后,PHP5更是進(jìn)一步物質(zhì)化。除了要與ASP.NET、JSP一拼外,就是方便於程式的模組化,讓程式庫的開發(fā)可以進(jìn)行,有了物質(zhì)化的功能,程式庫才可以與開發(fā)者自行撰寫的程式碼切割。
3.開發(fā)者的共同需求:如果每一次開發(fā)PHP程式,都要從無到有完全自己來,雖然可以鍛鍊程式功力,但卻沒有效率,也不甚經(jīng)濟(jì)。若一些常用的功能可以用程式庫的方式來處理,將可以解決許多開發(fā)者的困難?;哆@種所有開發(fā)者都共同擁有的需求,讓這些PHP的開發(fā)者分工合作,共同發(fā)展程式庫,幫助自己也幫助別人。
2-7 PHP的競爭者與優(yōu)缺點(diǎn)
PHP是在1994年發(fā)展出來的,經(jīng)過四次主要的改寫,成為我們今天所看到的可以廣泛應(yīng)用且成熟的產(chǎn)品。到2005年四月為止,PHP已經(jīng)運(yùn)用於全球超過1900萬個(gè)網(wǎng)站上,而且這個(gè)數(shù)字還在持續(xù)快速成長中。
PHP與他們的競爭對手相比,他具有以下優(yōu)勢:
高效能:不是我黃婆賣瓜,哈哈。.., 我閱覽過許多Asp.NET與Jsp的網(wǎng)頁,效能上實(shí)在無法與PHP相比。(Asp.NET與Jsp的使用者應(yīng)該不會(huì)看這篇文章吧)。
● 可以與許多不同的資料庫系統(tǒng)相連結(jié):其他的競爭者也可以,但沒有PHP快。
● 易學(xué)易用:PHP的程式碼的寫法非常直覺,容易學(xué)習(xí)。
● 支援物件導(dǎo)向:這方面Jsp是強(qiáng)項(xiàng),但PHP5已經(jīng)追上來了。
● 低成本:根本不用錢。
● 內(nèi)建非常多的函式庫:記得筆者以前使用Asp,內(nèi)建的函式庫實(shí)在少的可憐。
● 開放原始碼:安全性會(huì)比沒有開放的高。
● PEAR程式庫:這是最近的強(qiáng)力武器,用來與強(qiáng)敵們一爭長短。
● 可攜性:無論是各類Unix作業(yè)系統(tǒng),如:Linux,F(xiàn)reeBSD,商業(yè)版Unix或Windows作業(yè)系統(tǒng)都可以使用PHP。
Asp.NET與Jsp當(dāng)然也有他們獨(dú)特的優(yōu)點(diǎn)? 例如,Jsp夾帶JAVA強(qiáng)大的功能,它就可以呈現(xiàn)一些目前PHP無法做到的效果。所以Jsp也吸引了許多的使用者,但筆者對Jsp目前的效能實(shí)在還不甚滿意,相反地,對PHP的快速度滿意的不得了。
使用哪一種程式,就由您自行做明確的抉擇,不過,若您選擇觀看文章,相信我們應(yīng)該都是同道中人,PHP的愛好者。
總而言之,許多PHP高手共同構(gòu)筑了一個(gè)強(qiáng)大的支援網(wǎng),若您是PHP的程式開發(fā)者,卻對這些高手的好意毫不領(lǐng)情,那不是太可惜了嗎?
相關(guān)文章
《PHP編程最快明白》第四講:日期、表單接收、session、cookie
《PHP編程最快明白》第四講:日期、表單接收、session、cookie,需要的朋友可以參考下。2010-11-11一個(gè)從別的網(wǎng)站抓取信息的例子(域名查詢)
一個(gè)從別的網(wǎng)站抓取信息的例子(域名查詢)...2006-10-10不用iconv庫的gb2312與utf-8的互換函數(shù)
不用iconv庫的gb2312與utf-8的互換函數(shù)...2006-10-10PHP反轉(zhuǎn)字符串函數(shù)strrev()函數(shù)的用法
strrev()函數(shù)的用法,很好玩的函數(shù),主要功能就是把字符串進(jìn)行首尾顛倒并把顛倒后的結(jié)果返回2012-02-02PHP PDOStatement::nextRowset講解
今天小編就為大家分享一篇關(guān)于PHP PDOStatement::nextRowset講解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02PHP調(diào)用三種數(shù)據(jù)庫的方法(1)
PHP調(diào)用三種數(shù)據(jù)庫的方法(1)...2006-10-10《PHP邊學(xué)邊教》(04.編寫簡易的通訊錄——視頻教程1)
《PHP邊學(xué)邊教》(04.編寫簡易的通訊錄——視頻教程1)...2006-12-12