首先得說明的是我們選擇的是CodeIgniter,他并不是完美的,但是從下更方面分析來看CodeIgniter用作網(wǎng)站建設(shè)開發(fā)業(yè)還是能勝任的,好騾子好馬我們遛一遛就知道,畢竟來說沒有最好的,只有適合自己的。我們建站多年也覺得CodeIgniter完全可以勝任,所以在此說明,對于下列說明,權(quán)當(dāng)你擴展對框架的了解吧!
在如此多的PHP MVC框架中,怎樣去選擇一款各方面都不錯的框架學(xué)習(xí)并在項目中使用它?這是每一個PHPer都會面臨的問題。比如當(dāng)前比較流行的框架有:ZendFrameWork、ThinkPHP(國產(chǎn))、CodeIgniter、YII等。每個人心目中的好壞標(biāo)準(zhǔn)不一樣,再加上有的人習(xí)慣了某框架,想讓他再接受其優(yōu)秀的框架也是比較難的。所以,我們應(yīng)該怎樣去判斷一款框架是否屬于自己,變得非常的突出。
一、性能:
所謂的性能指的是IO、CPU占用、PHP解析時間等幾個指標(biāo)。當(dāng)前的服務(wù)器最突出的問題是CPU已經(jīng)非常快了,內(nèi)存已經(jīng)夠大夠便宜了,唯獨硬盤IO不夠高。這就像一個一個智商150與一個智商80的人做1+1一樣,根本體現(xiàn)不出智商的優(yōu)越性。
特別指出一點,ZendFrameWork框架是我見過IO效率最差的框架。在不借助任何緩存擴展與其他框架對比情況下,簡直不能忍受它的IO效率。相對來說,在IO這塊還是那些用C語言寫的框架比較好,CPU占用也低,內(nèi)存使用也低。比如大名鼎鼎的Yaf框架。但是,它有一個致命的問題,框架安裝是以擴展形式安裝的。如果框架有Bug的話,也很難偵測到。
二、全棧式
雖然我個人不太贊成PHP框架過度全棧式。但是,如果能把全棧式做到優(yōu)雅簡潔,我也是非常興奮的。什么是全棧式?就是一款框架包含了WEB開發(fā)中所有的東西。比如:上傳、分頁、導(dǎo)入導(dǎo)出、郵件、日志、錯誤、二維碼、RSS、RBAC等。這樣的話,才能真正解決掉我們?nèi)プ约簩崿F(xiàn)的麻煩,節(jié)省我們的時間。也提高了代碼的安全性移植性。
三、學(xué)習(xí)難度是否陡峭
畢竟我們要運用到實際的項目中。以后陸續(xù)還會添加更多的人進入項目開發(fā)中。如果,學(xué)習(xí)難度過于陡峭,勢必會影響項目的進度和后期維護的成本。目前,我用過的框架中ThinkPHP做得還不錯,文檔還比較完整易懂。換作正在用的YII框架,簡直是頭痛。提供的文檔實在是過于簡單,示例不夠豐富。而且,代碼不夠優(yōu)雅。在某些設(shè)計上,過于面向?qū)ο螅瑢?dǎo)致在PHP這種語言中操作起來不是特別順手。
四、框架社會是否活躍
一個社區(qū)活躍與否,直接關(guān)系到這個框架的未來的命運。誰也不希望今天還牛逼的框架,就因為沒有與時俱進,最終淹沒在歷史的長河中。自己又得花時間掌握新框架。比如:前幾天MongoDB還是比較火的時候,當(dāng)時幾乎沒有框架在DB層,即ORM實現(xiàn)這個數(shù)據(jù)庫的接口。而項目中可能會考慮使用MongoDB。當(dāng)時幾個比較知名的且速度比較過得去的框架都沒有支持。結(jié)果,還是咱們國產(chǎn)的ThinkPHP支持了。雖然,BUG可能有點多。至少,某種程度說明了一個活躍的社區(qū)是非常有必要的。
五、框架使用的群體大小
一款框架再牛逼,如果沒有人使用。你學(xué)了也只能在自己的一畝三分地有所建樹。出了這個圈,效果就不明顯了。PHPer學(xué)習(xí)這個東西,主要還是為了能找一份高薪順手的工作。如果,學(xué)了半天,結(jié)果卻沒有人用這個框架在項目中。那是相當(dāng)悲催的。