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