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