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