韋永凱
摘要:PHP語(yǔ)言是當(dāng)前網(wǎng)站開(kāi)發(fā)最熱門的語(yǔ)言之一,越來(lái)越多的網(wǎng)站涌現(xiàn)在了互聯(lián)網(wǎng)上。但是由于安全意識(shí)的缺乏以及攻擊手段的層出不窮,PHP網(wǎng)站所暴露出來(lái)的安全性問(wèn)題也越來(lái)越多,本文主要就PHP的優(yōu)點(diǎn)與缺點(diǎn)分析進(jìn)行敘述。
關(guān)鍵詞:PHP語(yǔ)言;優(yōu)點(diǎn);缺點(diǎn)
自20世紀(jì)90年代國(guó)內(nèi)互聯(lián)網(wǎng)開(kāi)始發(fā)展到現(xiàn)在,互聯(lián)網(wǎng)信息幾乎覆蓋了我們?nèi)粘;顒?dòng)所有知識(shí)范疇,并逐漸成為我們生活、學(xué)習(xí)、工作中必不可少的一部分。據(jù)統(tǒng)計(jì),從2003年開(kāi)始,我國(guó)的網(wǎng)頁(yè)規(guī)模基本保持了翻番的增長(zhǎng)速度,并且呈上升趨勢(shì)。PHP語(yǔ)言作為當(dāng)今最熱門的網(wǎng)站程序開(kāi)發(fā)語(yǔ)言,它具有成本低、速度快、可移植性好、內(nèi)置豐富的函數(shù)庫(kù)等優(yōu)點(diǎn),因此被越來(lái)越多的企業(yè)應(yīng)用于網(wǎng)站開(kāi)發(fā)中。但隨著互聯(lián)網(wǎng)的不斷更新?lián)Q代,PHP語(yǔ)言也出現(xiàn)了不少問(wèn)題。
一、對(duì)PHP語(yǔ)言的定義理解
PHP(中文名:“超文本預(yù)處理器”)是在服務(wù)器端執(zhí)行的腳本語(yǔ)言,與C語(yǔ)言類似,是常用的網(wǎng)站編程語(yǔ)言。PHP獨(dú)特的語(yǔ)法混合了C、Java、Perl以及PHP自創(chuàng)的語(yǔ)法。利于學(xué)習(xí),使用廣泛,主要適用于Web開(kāi)發(fā)領(lǐng)域。
二、PHP語(yǔ)言具有的主要特點(diǎn)
(一)開(kāi)源性和免費(fèi)性
由于PHP的解釋器的源代碼是公開(kāi)的,所以安全系數(shù)較高的網(wǎng)站可以自己更改PHP的解釋程序。另外,PHP運(yùn)行環(huán)境的使用也是免費(fèi)的。
(二)快捷性
PHP是一種非常容易學(xué)習(xí)和使用的一門語(yǔ)言,它的語(yǔ)法特點(diǎn)類似于C語(yǔ)言,但又沒(méi)有C語(yǔ)言復(fù)雜的地址操作,而且又加入了面向?qū)ο蟮母拍睿偌由纤哂泻?jiǎn)潔的語(yǔ)法規(guī)則,使得它操作編輯非常簡(jiǎn)單,實(shí)用性很強(qiáng)。
(三)數(shù)據(jù)庫(kù)連接的廣泛性
PHP可以與很多主流的數(shù)據(jù)庫(kù)建立起連接,如MySQL、ODBC、Oracle等,PHP是利用編譯的不同函數(shù)與這些數(shù)據(jù)庫(kù)建立起連接的,PHPLIB就是常用的為一般事務(wù)提供的基庫(kù)。
(四)面向過(guò)程和面向?qū)ο蟛⒂?/p>
在PHP語(yǔ)言的使用中,可以分別使用面向過(guò)程和面向?qū)ο螅铱梢詫HP面向過(guò)程和面向?qū)ο髢烧咭黄鸹煊茫@是其它很多編程語(yǔ)言是做不到的。
三、PHP語(yǔ)言的優(yōu)點(diǎn)
(一)流行,容易上手
PHP是目前最流行的編程語(yǔ)言,這毋庸置疑。它驅(qū)動(dòng)全球超過(guò)2億多個(gè)網(wǎng)站,有全球超過(guò)81.7%的公共網(wǎng)站在服務(wù)器端采用PHP。PHP常用的數(shù)據(jù)結(jié)構(gòu)都內(nèi)置了,使用起來(lái)方便簡(jiǎn)單,也一點(diǎn)都不復(fù)雜,表達(dá)能力相當(dāng)靈活。
(二)開(kāi)發(fā)職位很多
在服務(wù)器端的網(wǎng)站編程中PHP會(huì)更容易幫助你找到工作。京東、天貓、百度、新浪、微信等很多互聯(lián)網(wǎng)相關(guān)企業(yè)都在使用PHP開(kāi)發(fā)框架,所以可以說(shuō)市場(chǎng)對(duì)PHP的開(kāi)發(fā)程序員的需求還是比較大的。
(三)仍然在不斷發(fā)展
PHP在不斷兼容著類似closures和命名空間等技術(shù),同時(shí)兼顧性能和當(dāng)下流行的框架。版本是7之后,一直在提供更高性能的應(yīng)用。
四、PHP語(yǔ)言的缺點(diǎn)
(一)PHP的解釋運(yùn)行機(jī)制
在PHP中,所有的變量都是頁(yè)面級(jí)的,無(wú)論是全局變量,還是類的靜態(tài)成員,都會(huì)在頁(yè)面執(zhí)行完畢后被清空。以JSP為例,在JSP中,Java Bean的scope有四種有效值:Page、Application、Session、Request,分別對(duì)應(yīng)頁(yè)面、程序、會(huì)話、請(qǐng)求四種生存期。但在PHP中,只有Page一種生存期。
(二)設(shè)計(jì)缺陷,缺少關(guān)注
PHP被稱作是不透明的語(yǔ)言,因?yàn)闆](méi)有堆棧追蹤,各種脆弱的輸入。沒(méi)有一個(gè)明確的設(shè)計(jì)哲學(xué)。早期的PHP受到Perl的影響,帶有out參數(shù)的標(biāo)準(zhǔn)庫(kù)又是有C語(yǔ)言引入,面向?qū)ο蟮牟糠钟质菑腃++和Java學(xué)來(lái)的。
(三)對(duì)遞歸的不良支持
PHP并不擅長(zhǎng)遞歸。一個(gè)PHP開(kāi)發(fā)人員說(shuō)道:“PHP 4.0(Zend)對(duì)密集數(shù)據(jù)使用了棧方式,而不是使用堆方式。也就是說(shuō)它能容忍的遞歸函數(shù)的數(shù)量限制和其他語(yǔ)言比起來(lái)明顯少。”這是一個(gè)很不好的借口。每一個(gè)編程語(yǔ)言都應(yīng)該提供良好的遞歸支持。
五、PHP語(yǔ)言的主要參考框架
(一)CodeIgniter的優(yōu)點(diǎn)
1.配置簡(jiǎn)單,全部的配置使用PHP腳本來(lái)配置,執(zhí)行效率高;具有基本的路由功能,能夠進(jìn)行一定程度的路由;具有初步的Layout功能,能夠制作一定程度的界面外觀;數(shù)據(jù)庫(kù)層封裝的不錯(cuò),具有基本的MVC功能。
2.快速簡(jiǎn)潔,代碼不多,執(zhí)行性能高,PHP框架簡(jiǎn)單,容易上手,學(xué)習(xí)成本低,文檔詳細(xì);自帶了很多簡(jiǎn)單好用的library,框架適合小型應(yīng)用。
(二)CodeIgniter缺點(diǎn)
1.把Model層簡(jiǎn)單的理解為數(shù)據(jù)庫(kù)操作。
2.PHP框架略顯簡(jiǎn)單,只能夠滿足小型應(yīng)用,略微不太能夠滿足中型應(yīng)用需要。
(三)CakePHP的優(yōu)點(diǎn)
1.CakePHP是最類似于RoR的PHP框架,包括設(shè)計(jì)方式,數(shù)據(jù)庫(kù)操作的Active Record方式;設(shè)計(jì)層面很優(yōu)雅,沒(méi)有自帶多余的 library,所有的功能都是純粹的框架,執(zhí)行效率還不錯(cuò);數(shù)據(jù)庫(kù)層的 hasOne, hasMany 功能很強(qiáng)大,對(duì)于復(fù)雜業(yè)務(wù)處理比較合適;路由功能,配置功能還不錯(cuò);自動(dòng)構(gòu)建腳手架(scaffold)很強(qiáng)大;適合中型應(yīng)用;基本實(shí)現(xiàn)過(guò)了MVC每一層;具有自動(dòng)操作命令行腳本功能。
2.文檔比較全,在國(guó)內(nèi)推廣的比較成功,大部分人都知道CakePHP,學(xué)習(xí)成本中等。
(四)CakePHP的缺點(diǎn)
1.CakePHP非常嚴(yán)重的問(wèn)題是把Model理解為數(shù)據(jù)庫(kù)層操作,嚴(yán)重影響了除了數(shù)據(jù)庫(kù)之外的操作能力。
2.CakePHP的cache功能略顯薄弱,配置功能稍嫌弱;CakePHP不適合大型應(yīng)用,只適合中型應(yīng)用,小型應(yīng)用來(lái)說(shuō)略微的學(xué)習(xí)成本高了點(diǎn)。
六、總結(jié)
對(duì)于非常小的項(xiàng)目,它可以是一個(gè)十分符合人意的編程語(yǔ)言。但是對(duì)于較大的和更為復(fù)雜的項(xiàng)目,PHP就顯出它的薄弱了。所以,針對(duì)PHP暴露出的一系列缺點(diǎn)問(wèn)題,我們應(yīng)當(dāng)不斷地摸索之后,然后找到某些問(wèn)題的解決方案。一個(gè)開(kāi)源的語(yǔ)言十分流行是一件好事。我希望所有的問(wèn)題能有一天得到解決,然后我們就將擁有一個(gè)開(kāi)源語(yǔ)言,它既開(kāi)源,又好用。
參考文獻(xiàn):
[1]劉中華,潘凱華,PHP 項(xiàng)目開(kāi)發(fā)案例全程實(shí)錄(第 2 版)[M],清華大學(xué)出版社,2011
[2]陳惠貞,陳俊榮,PHP+MySQL 程序設(shè)計(jì)實(shí)例講座,清華大學(xué)出版社,2010
[3]劉劍云,馬晨陽(yáng),PHP+MySQL 網(wǎng)站開(kāi)發(fā)應(yīng)用從入門到精通,中國(guó)鐵道出版社,2010