php中7個常用框架
2021-02-02
一、ThinkPHP
ThinkPHP(FCS)是一個輕量級的中型框架,是從Java的Struts結(jié)構(gòu)移植而來的中文PHP開發(fā)框架。它使用面向?qū)ο蟮拈_發(fā)結(jié)構(gòu)和MVC模式,并模擬Struts標記庫的實現(xiàn)。它在所有方面都更加用戶友好。熟悉J2EE的開發(fā)人員相對易于使用,適合php框架初學(xué)者。 ThinkPHP的目的是簡化開發(fā),提高效率并易于擴展。它的數(shù)據(jù)庫支持包括MySQL,MSSQL,Sqlite,PgSQL,Oracle和PDO支持。 ThinkPHP具有豐富的文檔和示例,并且該框架具有高度兼容性,但功能有限,因此更適合中小型項目的開發(fā)。
優(yōu)勢
1.借助成熟的Java思想
2.易于使用,具有豐富的中文文件;學(xué)習(xí)成本低,社區(qū)活動頻繁
3.框架高度兼容,PHP4和PHP5完全兼容,并且UTF8完全受支持。
4.適用于中小型項目的開發(fā)
5.從thinkphp 3. 2. 2引入了作曲家軟件包管理工具
缺點
1.不能很好地支持Ajax;
2.目錄結(jié)構(gòu)混亂,比其他框架目錄結(jié)構(gòu)差一點;
3.易于入門,但更難于深入學(xué)習(xí)。
二、Yii
Yii是用于開發(fā)大型Web應(yīng)用程序的基于組件的高性能php框架。 Yii采用嚴格的OOP編寫,并具有完整的庫參考和全面的教程。從MVC,DAO / ActiveRecord,小部件,緩存,分層RBAC,Web服務(wù)到主題化,I18N和L10N,Yii提供了當今Web 2. 0應(yīng)用程序開發(fā)所需的幾乎所有功能。實際上,Yii是最高效的PHP框架之一。
優(yōu)勢
1.純OOP
2.用于大型Web應(yīng)用程序
3.該模型易于使用
4.開發(fā)速度很快,并且運行速度也很快。出色的性能和豐富的功能
5.使用命令行工具。
6.支持作曲家軟件包管理工具
缺點:
1.對模型層的指導(dǎo)和考慮較少
2.更少的文檔示例
3.英語太多
4.需要精通PHP技術(shù)并精通OOP編程!
5.視圖不是理想的視圖。理想的視圖可能只是html代碼,而不涉及PHP代碼。
三、laravel
優(yōu)勢
1. laravel的設(shè)計思想非常先進,非常適合各種開發(fā)模型TDD,DDD和BDD的應(yīng)用
2.支持作曲家軟件包管理工具
3.結(jié)合了PHP的相對較新的功能,以及各種設(shè)計模式,Ioc容器,依賴項注入等。
缺點
1.基于基于組件的框架,因此很腫
四、CodeIgniter
優(yōu)點:
1. Code Igniter倡導(dǎo)“簡單就是美”的原則。沒有花哨的設(shè)計模式,沒有華麗的對象結(jié)構(gòu),一切都那么簡單。幾行代碼可以開始運行,并且可以輸出更多行代碼??梢哉f是“道為堅”的典范。
2.配置簡單,所有配置均使用PHP腳本配置,執(zhí)行效率高;
3.具有基本的路由功能,可以執(zhí)行一定級別的路由;
4.具有初步的布局功能,可以使界面外觀達到一定水平;
5.數(shù)據(jù)庫層封裝良好,具有基本的MVC功能。
6.快速簡潔,代碼不多,執(zhí)行性能高,
7.具有簡單的框架,易于使用,學(xué)習(xí)成本低和詳細的文檔;
8.帶有許多簡單易用的庫,該框架適用于小型應(yīng)用程序。
缺點:
1.本身的實現(xiàn)并不理想。
2.內(nèi)部結(jié)構(gòu)太混亂了。盡管它簡單易用,但缺乏擴展功能。
3.只是將Model層理解為數(shù)據(jù)庫操作。
4.框架有點簡單,只能滿足小型應(yīng)用程序的需求,但滿足中型應(yīng)用程序的需求卻略微不足。
評論:
通常,值得使用CodeIgniter來完成簡單而快速的應(yīng)用程序。同時,可以構(gòu)造一定級別的布局以利于模板重用。數(shù)據(jù)操作層包裝合理,CodeIgniter并沒有使用太多過于復(fù)雜的設(shè)計。模式,執(zhí)行性能和代碼可讀性都很好。至于附加庫,它還不錯,簡單而有效。
五、Zend Framework
優(yōu)點:
1. PHP5中大量的面向?qū)ο蟮男鹿δ埽航涌?,異常,抽象類,SPL等。這些東西的應(yīng)用使Zend Framework高度模塊化和靈活
2.嚴格遵循“接口編程”和“單一對象責(zé)任”的原則
3.正式生產(chǎn),它帶有很多庫,框架本身使用許多設(shè)計模式進行編寫,體系結(jié)構(gòu)非常優(yōu)雅,執(zhí)行效率中等
4. MVC設(shè)計,更簡潔
5.具有路由功能和相對強大的配置文件(能夠處理XML和php INI)
6.可以直觀地支持數(shù)據(jù)庫操作以外的模型層(比CodeIgniter和CakePHP強),并且可以輕松地使用Loader函數(shù)加載其他新添加的類
7.緩存功能非常強大,從前端緩存到后端緩存均受支持,后端緩存支持Memcache,APC,SQLite,文件等。
8.數(shù)據(jù)庫操作功能非常強大,并支持各種驅(qū)動程序(適配器)
9.具有完整的文檔,并且在國內(nèi)社區(qū)中已經(jīng)成熟
缺點:
1. MVC功能的完成相對較弱,View層易于實現(xiàn)(與未實現(xiàn)相同),并且不可能非常強大地控制前端頁面。
2.沒有自動腳本。要創(chuàng)建包括入口文件在內(nèi)的應(yīng)用程序,所有文件都必須由您自己手動構(gòu)建,而入門成本很高。
3.對于簡單的小型項目,它沒有在框架中應(yīng)用大量的面向?qū)ο笤O(shè)計,而是對開發(fā)人員提出了更高的要求,從而間接增加了項目的開發(fā)成本。
評論:
作為一個官方框架,Zend Framework的雄心是可以預(yù)見的。它希望壓縮其他框架,同時封裝許多功能強大的類庫,這些類庫可以提供一站式框架服務(wù)php框架比較,并且他們的開發(fā)團隊非常強大。它完全有能力開發(fā)非常強大的產(chǎn)品,因此,如果可以花更多的時間來完善Zend Framework,則可以肯定的是Zend Framework的前景廣闊。同樣,Zend Framework體系結(jié)構(gòu)本身也相對優(yōu)雅,這表明Zend官員擁有許多大師,并且設(shè)計概念相對先進。盡管某些功能尚未完全實現(xiàn),例如視圖層,自動腳本等,但這些功能都取決于未來。升級
六、CakePHP
優(yōu)點:
1.與RoR最相似的框架,包括設(shè)計方法,數(shù)據(jù)庫操作的Active Record方法
2.設(shè)計水平非常優(yōu)雅,沒有額外的庫,所有功能都是純框架,執(zhí)行效率還不錯
3.數(shù)據(jù)庫層的hasOne和hasMany功能非常強大,更適合復(fù)雜的業(yè)務(wù)處理
4.路由功能,配置功能中等難度
5.自動腳手架功能強大,適合中型應(yīng)用
6.基本上實現(xiàn)了MVC的每一層
7.具有自動操作命令行腳本的功能
8.文檔相對完整,學(xué)習(xí)成本中等
缺點:
1. CakePHP的一個非常嚴重的問題是,它將Model理解為數(shù)據(jù)庫層操作,這嚴重影響了除數(shù)據(jù)庫之外的操作能力
2.緩存功能略弱
3.配置功能稍弱
4.不適合大規(guī)模應(yīng)用,僅適合中型應(yīng)用。對于小型應(yīng)用程序,學(xué)習(xí)成本會更高。
評論:
通常,CakePHP框架代表著一個非常重要的時代,并且代表了PHP框架,并且目前正在發(fā)揮非常重要的作用。他們自己編寫的許多框架都模仿CakePHP成為里程碑產(chǎn)品的方式。 CakePHP透露基于RoR的敏捷開發(fā)方法和將數(shù)據(jù)庫操作視為唯一模型的設(shè)計思想,它是開發(fā)快速應(yīng)用程序和原型的出色工具;同樣,也值得選擇成為Web 2. 0網(wǎng)站的開發(fā)框架。
七、Symfony
優(yōu)點:
1.完全實現(xiàn)三層MVC
2.封裝了所有內(nèi)容,包括$ POST,$ GET數(shù)據(jù),異常處理,調(diào)試功能,數(shù)據(jù)檢測
3.包含強大的緩存功能
4.自動加載Class,可以隨意定義各種自己的類
5.強大的語言支持
6.具有非常強大的視圖層操作,可以分段包含多個文件。
7.非常強大的配置功能,使用xml配置來控制所有框架和程序運行行為
8.包括功能強大的多層項目和應(yīng)用程序管理:項目->應(yīng)用程序->模塊->動作,可以滿足一個項目下多個應(yīng)用程序的需求,并且每一層都可以定義自己的類庫,配置文件,布局
9.非常強大的命令行操作功能,包括構(gòu)建項目,構(gòu)建應(yīng)用程序,構(gòu)建模塊,刷新緩存等。
10.Symfony絕對是開發(fā)大型復(fù)雜項目的首選php框架比較,因為使用Symfony可以大大節(jié)省開發(fā)成本,并且當多人協(xié)作時不會出現(xiàn)問題。在項目級別定義基本類之后,可以重用任何模塊,從而大大地重用了代碼。
缺點:
1.的最大問題是太多的具有不同樣式的開源項目被用于形成框架
2.由于Mojavi和Propel都很復(fù)雜,因此Symfony的結(jié)構(gòu)非常復(fù)雜,難以理解和學(xué)習(xí)
3.無法控制緩存功能。每當您進行開發(fā)和調(diào)試時,它始終會被緩存,您需要執(zhí)行symfony cc,symfony rc來清除和重建緩存
4.效率不是很高,尤其是在解析模板和讀取配置文件的過程中,這需要很多時間
5.學(xué)習(xí)成本很高,而且中國沒有成熟的社區(qū)和中文文檔
評論:
Symfony絕對是一個企業(yè)級框架,似乎唯一可以與Java領(lǐng)域強大的框架競爭的東西。強大的功能自然很難學(xué)習(xí),但是相應(yīng)的功能也對項目開發(fā)更有幫助。自然,建議使用Symfony進行復(fù)雜的項目進行處理,我認為這是值得的,后期的維護成本相對較低,可重用性很強。相應(yīng)地,如果將Symfony用于更復(fù)雜的Internet項目,則必須相應(yīng)地考慮數(shù)據(jù)庫分發(fā)的問題,然后需要丟棄Symfony隨附的數(shù)據(jù)庫操作層,并且需要自己定義它。當然,Symfony支持任意的Construct模型層
一般評論:
以上幾個框架都有自己的特點,都是開放源代碼項目,但是框架所針對的項目并不相同。一般來說:
1.小項目:CodeIngiter
2.中型項目:CakePHP,Zend Framework,Laravel,Thinkphp
3.大型重量級項目:Yii,Symfony,Laravel
以上劃分不是絕對的。選擇項目時,我們必須充分考慮框架的自定義和可伸縮性,因為每個項目都無法確定是否會隨需求的變化而變化