適合用于中小項目的開發(fā)5.從.2.2引入包管理工具缺點
2021-06-29
正文內(nèi)容
長期以來,討論最多的是各種PHP框架的優(yōu)缺點。網(wǎng)上的信息也比較分散?,F(xiàn)在我將收集和總結(jié)幾個主流框架。其中,我只用過Yii2、、Yaf,這四個。這種框架,所以對各種框架的評價大多來自網(wǎng)上資料,有問題請在評論中指出,共同進(jìn)步
一、
(FCS)是一個輕量級的中型框架,是從Java架構(gòu)移植過來的中文PHP開發(fā)框架。它使用面向?qū)ο蟮拈_發(fā)結(jié)構(gòu)和MVC模型,并模擬實現(xiàn)的標(biāo)簽庫。它在各個方面都更加人性化。熟悉J2EE的開發(fā)者比較好用,適合php框架的初學(xué)者。目的是簡化開發(fā),提高效率,并且易于擴(kuò)展。它在數(shù)據(jù)庫支持方面包括了、、、和 PDO 支持。文檔和實例豐富,框架兼容性強(qiáng),但功能有限,更適合中小型項目的開發(fā)。
優(yōu)勢
1.借助成熟的Java思想
2.使用方便,中文文檔豐富;學(xué)習(xí)成本低,社區(qū)活躍度高
3.框架高度兼容,PHP4和PHP5完全兼容,UTF8完全支持。
4.適合中小項目開發(fā)
5.從.2.2 引入包管理工具
缺點
1. 對 Ajax 的支持不是很好;
2.目錄結(jié)構(gòu)混亂,比其他框架目錄結(jié)構(gòu)差一點;
3.上手容易,深入學(xué)習(xí)難。
二、Yii
Yii 是一個基于組件的高性能 PHP 框架,用于開發(fā)大型 Web 應(yīng)用程序。 Yii采用嚴(yán)格的OOP編寫,并有完整的庫參考和全面的教程。從MVC、DAO/、、、分層RBAC、Web服務(wù),到主題化、I18N和L10N,Yii提供了當(dāng)今Web2.0應(yīng)用開發(fā)所需的幾乎所有功能。事實上,Yii 是最高效的 PHP 框架之一。
優(yōu)勢
1.純OOP
2.用于大型網(wǎng)絡(luò)應(yīng)用
3.模型好用
4. 開發(fā)速度快,運(yùn)行速度也快。性能卓越,功能豐富
5.使用命令行工具。
6.支持包管理工具
缺點:
1.對層的指導(dǎo)和考慮較少
2.更少的文檔示例
3.英語太多
4.要求精通PHP技術(shù),精通OOP編程!
5.View 不是理想的視圖。理想的視圖可能只有html代碼,不涉及PHP代碼。
三、
優(yōu)勢
1.的設(shè)計思路非常先進(jìn),非常適合TDD、DDD、BDD多種開發(fā)模式的應(yīng)用
2.支持包管理工具
3.集合了php比較新的特性,以及各種設(shè)計模式、Ioc容器、依賴注入等
缺點
1.是基于組件的框架,所以比較臃腫
四、
優(yōu)點:
1.Code 提倡“簡單就是美”的原則。沒有花哨的設(shè)計模式,沒有華麗的對象結(jié)構(gòu),一切就是那么簡單。幾行代碼就可以開始運(yùn)行了,再多幾行代碼就可以輸出了??胺Q“道對劍”的典范。
2.配置簡單,所有配置使用PHP腳本配置,執(zhí)行效率高;
3.具有基本的路由功能,可以進(jìn)行一定級別的路由;
4.具備初步功能,可以做出一定程度的界面外觀;
5.數(shù)據(jù)庫層封裝的很好,具有基本的MVC功能。
6.快速簡潔,代碼不多,執(zhí)行性能高,
7.框架簡單,好用,學(xué)習(xí)成本低,文檔詳細(xì);
8.自帶很多簡單好用的框架,適合小型應(yīng)用。
缺點:
1. 的實現(xiàn)并不理想。
2. 內(nèi)部結(jié)構(gòu)太混亂了。雖然簡單易用,但缺乏擴(kuò)展能力。
3. 簡單地把層理解為數(shù)據(jù)庫操作。
4.框架有點簡單,只能滿足小型應(yīng)用的需求,有點不能滿足中型應(yīng)用的需求。
評論:
總的來說,完成簡單快速的應(yīng)用程序是值得的。同時在一定程度上可以構(gòu)造,方便模板復(fù)用。數(shù)據(jù)操作層封裝的很好,沒有使用太多過于復(fù)雜的設(shè)計模式。性能和代碼可讀性都很好。至于額外的,它們還不錯,簡單而高效。
五、Zend
優(yōu)點:
1.在PHP5中應(yīng)用了大量面向?qū)ο蟮男绿匦裕航涌?、異常、抽象類、SPL等。這些東西的應(yīng)用使得Zend高度模塊化和靈活
2.嚴(yán)格遵循“為接口編程”和“單一對象責(zé)任”的原則
3.官方產(chǎn)品,自帶很多,框架本身用了很多設(shè)計模式來寫,架構(gòu)很優(yōu)雅,執(zhí)行效率中等
4.MVC 設(shè)計,更簡潔
5.有路由功能,配置文件比較強(qiáng)大(可以處理XML和php INI)
6.可以直觀地支持除數(shù)據(jù)庫操作以外的層(強(qiáng)于和)php常用框架,并且可以輕松使用該功能加載其他新增層
7.很強(qiáng)大,從前端到后端支持,后端支持,APC,文件等
8.數(shù)據(jù)庫操作功能非常強(qiáng)大,支持各種驅(qū)動(適配器)
9.文檔很全,國內(nèi)社區(qū)也很成熟
缺點:
1.MVC 功能補(bǔ)全比較弱,View層實現(xiàn)簡單(和沒有實現(xiàn)一樣),不可能非常強(qiáng)大地控制前端頁面。
2. 沒有自動腳本。要創(chuàng)建應(yīng)用程序,包括入口文件,都必須自己手動構(gòu)建php常用框架,上手成本很高。
3.對于簡單的小項目,沒有在框架中大量應(yīng)用面向?qū)ο蟮脑O(shè)計,反而對開發(fā)者提出了更高的要求,間接增加了項目的開發(fā)成本
評論:
作為官方框架,Zend 的雄心是可以預(yù)見的。他們想擠出其他框架,同時封裝了很多強(qiáng)大的庫來提供一站式的框架服務(wù),而且他們的開發(fā)團(tuán)隊非常強(qiáng)大,完全有足夠的能力開發(fā)非常強(qiáng)大的產(chǎn)品,所以基本可以肯定如果需要更多時間來完善框架,Zend 的前景可期。同樣的,Zend架構(gòu)本身也比較優(yōu)雅,說明Zend官方有很多高手,設(shè)計理念也比較先進(jìn)。雖然有些功能沒有完全實現(xiàn),比如View層、自動化腳本等,但這些都依賴于未來。升級
六、
優(yōu)點:
1.是與RoR最相似的框架,包括設(shè)計方法和數(shù)據(jù)庫操作方法
2.設(shè)計層次很優(yōu)雅,沒有冗余,所有功能都是純框架,執(zhí)行效率還不錯
3.數(shù)據(jù)庫層功能強(qiáng)大,更適合復(fù)雜的業(yè)務(wù)處理
4. 功能,配置功能中等難度
5. () 非常強(qiáng)大,適合中型應(yīng)用
6.基本實現(xiàn)了MVC的每一層
7.具有自動運(yùn)行命令行腳本的功能
8.文檔齊全,學(xué)習(xí)成本中等
缺點:
1.很嚴(yán)重的問題是理解為數(shù)據(jù)庫層操作,嚴(yán)重影響除了數(shù)據(jù)庫之外的操作能力
2.功能稍弱
3.配置功能稍弱
4.不適合大規(guī)模應(yīng)用,只適合中型應(yīng)用。對于小規(guī)模應(yīng)用,學(xué)習(xí)成本略高。
評論:
總的來說,框架代表了一個非常重要的時代,也是PHP框架的代表,在當(dāng)前扮演著非常重要的角色。很多自己寫的框架都有模仿的方式,是里程碑式的產(chǎn)品;它揭示了 RoR 敏捷開發(fā)方法和數(shù)據(jù)庫操作作為唯一的設(shè)計思想是開發(fā)快速應(yīng)用程序和原型的絕佳工具;同樣,也值得選擇作為Web2.0網(wǎng)站的開發(fā)框架
七、
優(yōu)點:
1.完全實現(xiàn)了三層MVC
2.封裝了一切,包括$POST、$GET數(shù)據(jù)、異常處理、調(diào)試函數(shù)、數(shù)據(jù)檢測
3. 包含強(qiáng)大的緩存功能
4.自動加載,各種自己隨意定義
5.強(qiáng)大的語言支持
6.具有非常強(qiáng)大的視圖層操作,可以在中包含單個多個文件
7.非常強(qiáng)大的配置功能,使用xml配置來控制所有框架和程序運(yùn)行行為
8.包含強(qiáng)大的多級項目和應(yīng)用管理:--> --> -->,可以滿足一個項目下多個應(yīng)用的??需求,并且每一層都可以定義自己的類庫和配置文件,
9.非常強(qiáng)大的命令行操作功能,包括構(gòu)建項目、構(gòu)建應(yīng)用、構(gòu)建模塊、刷新緩存等
10.絕對是大型復(fù)雜項目開發(fā)的首選,因為會大大節(jié)省開發(fā)成本,多人協(xié)作也不會出現(xiàn)問題。定義了層次,定義了基礎(chǔ)之后,任何模塊都可以復(fù)用,大大復(fù)用了代碼。
缺點:
1.最大的問題是太多不同風(fēng)格的開源項目被用來組成一個框架
2.由于兩者和本身都比較復(fù)雜,結(jié)構(gòu)非常復(fù)雜,難以理解和學(xué)習(xí)
3. 無法控制緩存功能。每次開發(fā)和調(diào)試時都會緩存它。需要執(zhí)行cc、rc來清除和重建緩存。
4.效率不是很高,尤其是解析模板和讀取配置文件的過程,需要很多時間
5.學(xué)習(xí)成本很高,國內(nèi)也沒有成熟的社區(qū)和中文文檔
評論:
絕對是企業(yè)級框架,唯一能與Java領(lǐng)域強(qiáng)大的框架抗衡的東西;強(qiáng)大的東西自然學(xué)起來比較復(fù)雜,但是對應(yīng)的東西對項目開發(fā)也更有幫助。當(dāng)然,建議使用復(fù)雜的項目。處理起來,我覺得還是值得的,后期維護(hù)成本比較低,復(fù)用性很強(qiáng)。相應(yīng)的,如果你在使用比較復(fù)雜的互聯(lián)網(wǎng)項目,就必須相應(yīng)地考慮數(shù)據(jù)庫分布的問題,那么就需要舍棄內(nèi)置的數(shù)據(jù)庫操作層,需要自己定義,當(dāng)然支持任意構(gòu)建層
一般評論:
以上幾個框架各有特點,都是開源項目,只是框架針對的項目不同。一般而言:
1.小項目:
2. 項目:,Zend,
3.大型重量級項目:Yii,,,
以上劃分不是絕對的。選擇項目時,一定要充分考慮框架的可定制性和可擴(kuò)展性,因為每個項目都不能確定自己是否會隨著需求的變化而變化
以上是PHP常用的七種框架優(yōu)缺點的詳細(xì)內(nèi)容。更多內(nèi)容請關(guān)注php中文網(wǎng)其他相關(guān)文章!
免責(zé)聲明:本文首發(fā)于php中文網(wǎng)。轉(zhuǎn)載請注明出處。感謝您的尊重!如果您有任何問題,請聯(lián)系我們