Yii和L10NYii提供了今日Web2.0應(yīng)用開(kāi)發(fā)所需要的幾乎一切功能
2021-02-02
yaf
1、用C語(yǔ)言開(kāi)發(fā)的PHP框架, 相比原生的PHP, 幾乎不會(huì)帶來(lái)額外的性能開(kāi)銷(xiāo).
2、所有的框架類(lèi), 不需要編譯, 在PHP啟動(dòng)的時(shí)候加載, 并常駐內(nèi)存.
3、更短的內(nèi)存周轉(zhuǎn)周期, 提高內(nèi)存利用率, 降低內(nèi)存占用率.
4、靈巧的自動(dòng)加載. 支持全局和局部?jī)煞N加載規(guī)則, 方便類(lèi)庫(kù)共享.
5、高性能的視圖引擎.
6、高度靈活可擴(kuò)展的框架, 支持自定義視圖引擎, 支持插件, 支持自定義路由等等.
7、內(nèi)建多種路由, 可以兼容目前常見(jiàn)的各種路由協(xié)議.
8、強(qiáng)大而又高度靈活的配置文件支持. 并支持緩存配置文件, 避免復(fù)雜的配置結(jié)構(gòu)帶來(lái)的性能損失.
9、在框架本身,對(duì)危險(xiǎn)的操作習(xí)慣做了禁止.
10、更快的執(zhí)行速度, 更少的內(nèi)存占用.
tp
ThinkPHP的優(yōu)缺點(diǎn)如下:
1、高級(jí)模型:可以輕松支持序列化字段、文本字段、只讀字段、延遲寫(xiě)入、樂(lè)觀鎖、數(shù)據(jù)分表等高級(jí)特性。
2、視圖模型:輕松動(dòng)態(tài)地創(chuàng)建數(shù)據(jù)庫(kù)視圖,多表查詢(xún)相對(duì)簡(jiǎn)單。
3、關(guān)聯(lián)模型:讓你以出乎意料的簡(jiǎn)單、靈活的方式完成多表的關(guān)聯(lián)操作。
4、模板引擎:系統(tǒng)內(nèi)建了一款卓越的基于XML的編譯型模板引擎,支持兩種類(lèi)型的模板標(biāo)簽,融合了Smarty和JSP標(biāo)簽庫(kù)的思想,支持標(biāo)簽庫(kù)擴(kuò)展。通過(guò)驅(qū)動(dòng)還可以支持Smarty、EaseTemplate、TemplateLite、Smart等第三方模板引擎。
5、緩存機(jī)制:系統(tǒng)支持包括文件方式、APC、Db、Memcache、Shmop、Eaccelerator和Xcache在內(nèi)的多種動(dòng)態(tài)數(shù)據(jù)緩存類(lèi)型,以及可定制的靜態(tài)緩存規(guī)則,并提供了快捷方法進(jìn)行存取操作。
6、類(lèi)庫(kù)導(dǎo)入:ThinkPHP是首先采用基于類(lèi)庫(kù)包和命名空間的方式導(dǎo)入類(lèi)庫(kù),讓類(lèi)庫(kù)導(dǎo)入看起來(lái)更加簡(jiǎn)單清晰,而且還支持沖突檢測(cè)和別名導(dǎo)入。為了方便項(xiàng)目的跨平臺(tái)移植,系統(tǒng)還可以嚴(yán)格檢查加載文件的大小寫(xiě)。
7、擴(kuò)展機(jī)制:系統(tǒng)支持包括類(lèi)庫(kù)擴(kuò)展、驅(qū)動(dòng)擴(kuò)展、應(yīng)用擴(kuò)展、模型擴(kuò)展、控制器擴(kuò)展、標(biāo)簽庫(kù)擴(kuò)展、模板引擎擴(kuò)展、Widget擴(kuò)展、行為擴(kuò)展和模式擴(kuò)展在內(nèi)的強(qiáng)大靈活的擴(kuò)展機(jī)制,讓你不再受限于核心的不足和無(wú)所適從,隨心DIY自己的框架和擴(kuò)展應(yīng)用。
8、URL模式:系統(tǒng)支持普通模式、PATHINFO模式、REWRITE模式和兼容模式的URL方式,支持不同的服務(wù)器和運(yùn)行模式的部署,配合URL路由功能,讓你隨心所欲的構(gòu)建需要的URL地址和進(jìn)行SEO優(yōu)化工作。
9、編譯機(jī)制:獨(dú)創(chuàng)的核心編譯和項(xiàng)目的動(dòng)態(tài)編譯機(jī)制,有效減少OOP開(kāi)發(fā)中文件加載的性能開(kāi)銷(xiāo)。ALLINONE模式更是讓你體驗(yàn)飛一般的感覺(jué)。
10、ORM:簡(jiǎn)潔輕巧的ORM實(shí)現(xiàn),配合簡(jiǎn)單的CURD以及AR模式,讓開(kāi)發(fā)效率無(wú)處不在。
11、查詢(xún)語(yǔ)言:內(nèi)建豐富的查詢(xún)機(jī)制,包括組合查詢(xún)、復(fù)合查詢(xún)、區(qū)間查詢(xún)、統(tǒng)計(jì)查詢(xún)、定位查詢(xún)、動(dòng)態(tài)查詢(xún)和原生查詢(xún),讓你的數(shù)據(jù)查詢(xún)簡(jiǎn)潔高效。
12、動(dòng)態(tài)模型:無(wú)需創(chuàng)建任何對(duì)應(yīng)的模型類(lèi),輕松完成CURD操作,支持多種模型之間的動(dòng)態(tài)切換,讓你領(lǐng)略數(shù)據(jù)操作的無(wú)比暢快和最佳體驗(yàn)。
13、分組模塊:不用擔(dān)心大項(xiàng)目的分工協(xié)調(diào)和部署問(wèn)題,分組模塊幫你解決跨項(xiàng)目的難題。
14、AJAX支持:內(nèi)置AJAX數(shù)據(jù)返回方法,支持JSON、XML和EVAL格式返回客戶(hù)端,并且系統(tǒng)不綁定任何AJAX類(lèi)庫(kù),可隨意使用自己熟悉的AJAX類(lèi)庫(kù)進(jìn)行操作。
15、多語(yǔ)言支持:系統(tǒng)支持語(yǔ)言包功能,項(xiàng)目和模塊都可以有單獨(dú)的語(yǔ)言包,并且可以自動(dòng)檢測(cè)瀏覽器語(yǔ)言自動(dòng)載入對(duì)應(yīng)的語(yǔ)言包。16、模式擴(kuò)展:除了標(biāo)準(zhǔn)模式外,系統(tǒng)內(nèi)置了Lite、Thin和Cli模式,針對(duì)不同級(jí)別的應(yīng)用開(kāi)發(fā)提供最佳核心框架,還可以自定義模式擴(kuò)展。
17、自動(dòng)驗(yàn)證和完成:自動(dòng)完成表單數(shù)據(jù)的驗(yàn)證和過(guò)濾,生成安全的數(shù)據(jù)對(duì)象。18、字段類(lèi)型檢測(cè):字段類(lèi)型強(qiáng)制轉(zhuǎn)換,確保數(shù)據(jù)寫(xiě)入和查詢(xún)更安全。
19、數(shù)據(jù)庫(kù)特性:系統(tǒng)支持多數(shù)據(jù)庫(kù)連接和動(dòng)態(tài)切換機(jī)制,支持分布式數(shù)據(jù)庫(kù)。猶如企業(yè)開(kāi)發(fā)的一把利刃,跨數(shù)據(jù)庫(kù)應(yīng)用和分布式支持從此無(wú)憂(yōu)。
cilaravelYII
一、ThinkPHP
ThinkPHP(FCS)是一個(gè)輕量級(jí)的中型框架,是從Java的Struts結(jié)構(gòu)移植而來(lái)的中文PHP開(kāi)發(fā)框架。它使用面向?qū)ο蟮拈_(kāi)發(fā)結(jié)構(gòu)和MVC模式,并模擬Struts標(biāo)記庫(kù)的實(shí)現(xiàn)。它在所有方面都更加用戶(hù)友好。熟悉J2EE的開(kāi)發(fā)人員相對(duì)易于使用,適合php框架初學(xué)者。 ThinkPHP的目的是簡(jiǎn)化開(kāi)發(fā),提高效率并易于擴(kuò)展。它的數(shù)據(jù)庫(kù)支持包括MySQL,MSSQL,Sqlite,PgSQL,Oracle和PDO支持。 ThinkPHP具有豐富的文檔和示例,并且該框架具有高度兼容性,但功能有限,因此更適合中小型項(xiàng)目的開(kāi)發(fā)。
優(yōu)勢(shì)
1.借助成熟的Java思想
2.易于使用,具有豐富的中文文件;學(xué)習(xí)成本低,社區(qū)活動(dòng)頻繁
3.框架高度兼容,PHP4和PHP5完全兼容,并且UTF8完全受支持。
4.適用于中小型項(xiàng)目的開(kāi)發(fā)
5.從thinkphp 3. 2. 2引入了作曲家軟件包管理工具
缺點(diǎn)
1.不能很好地支持Ajax;
2.目錄結(jié)構(gòu)混亂,比其他框架目錄結(jié)構(gòu)差一點(diǎn);
3.易于入門(mén),但很難深入學(xué)習(xí)。
二、Yii
Yii是用于開(kāi)發(fā)大型Web應(yīng)用程序的基于組件的高性能php框架。 Yii采用嚴(yán)格的OOP編寫(xiě)php框架比較,并具有完整的庫(kù)參考和全面的教程。從MVC,DAO / ActiveRecord,小部件,緩存,分層RBAC,Web服務(wù)到主題化,I18N和L10N,Yii提供了當(dāng)今Web 2. 0應(yīng)用程序開(kāi)發(fā)所需的幾乎所有功能。實(shí)際上,Yii是最高效的PHP框架之一。
優(yōu)勢(shì)
1.純OOP
2.用于大型Web應(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.視圖不是理想的視圖。理想的視圖可能只是HTML代碼,而不涉及PHP代碼。
三、laravel
優(yōu)勢(shì)
1. laravel的設(shè)計(jì)思想非常先進(jìn),非常適合各種開(kāi)發(fā)模型TDD,DDD和BDD的應(yīng)用
2.支持作曲家軟件包管理工具
3.結(jié)合了PHP的相對(duì)較新的功能,以及各種設(shè)計(jì)模式,Ioc容器,依賴(lài)項(xiàng)注入等。
缺點(diǎn)
1.基于基于組件的框架,因此顯得腫
四、CodeIgniter
優(yōu)點(diǎn):
1. Code Igniter倡導(dǎo)“簡(jiǎn)單就是美麗”的原則。沒(méi)有花哨的設(shè)計(jì)模式,沒(méi)有華麗的對(duì)象結(jié)構(gòu),一切都那么簡(jiǎn)單。幾行代碼可以開(kāi)始運(yùn)行,并且可以輸出更多行代碼??梢哉f(shuō)是“道為堅(jiān)”的典范。
2.配置簡(jiǎn)單,所有配置均使用PHP腳本配置,執(zhí)行效率高;
3.具有基本的路由功能,可以執(zhí)行一定級(jí)別的路由;
4.具有初步的布局功能,可以使界面外觀達(dá)到一定程度;
5.數(shù)據(jù)庫(kù)層被很好地封裝,并且具有基本的MVC功能。
6.快速簡(jiǎn)潔,代碼少,執(zhí)行性能高,
7.具有簡(jiǎn)單的框架,易于使用,較低的學(xué)習(xí)成本和詳細(xì)的文檔;
8.帶有許多簡(jiǎn)單易用的庫(kù),該框架適用于小型應(yīng)用程序。
缺點(diǎn):
1.本身的實(shí)現(xiàn)并不理想。
2.內(nèi)部結(jié)構(gòu)太混亂了。盡管它簡(jiǎn)單易用,但缺乏擴(kuò)展功能。
3.只是將Model層理解為數(shù)據(jù)庫(kù)操作。
4.框架有點(diǎn)簡(jiǎn)單,僅能滿(mǎn)足小型應(yīng)用程序的需求,但不能滿(mǎn)足中型應(yīng)用程序的需求。
評(píng)論:
通常,值得使用CodeIgniter來(lái)完成簡(jiǎn)單而快速的應(yīng)用程序。同時(shí),可以構(gòu)造一定級(jí)別的布局以利于模板重用。數(shù)據(jù)操作層包裝合理,CodeIgniter并沒(méi)有使用太多過(guò)于復(fù)雜的設(shè)計(jì)。模式,執(zhí)行性能和代碼可讀性都很好。至于附加庫(kù),它還不錯(cuò),簡(jiǎn)單而有效。
五、Zend Framework
優(yōu)點(diǎn):
1. PHP5中大量的面向?qū)ο蟮男鹿δ埽航涌?,異常,抽象?lèi),SPL等。這些東西的應(yīng)用使Zend Framework高度模塊化和靈活
2.嚴(yán)格遵循“接口編程”和“單一對(duì)象責(zé)任”的原則
3.正式生產(chǎn),它帶有很多庫(kù),框架本身使用許多設(shè)計(jì)模式進(jìn)行編寫(xiě),體系結(jié)構(gòu)非常優(yōu)雅,執(zhí)行效率中等
4. MVC設(shè)計(jì),更簡(jiǎn)潔
5.具有路由功能和強(qiáng)大的配置文件(能夠處理XML和php INI)
6.除了數(shù)據(jù)庫(kù)操作(比CodeIgniter和CakePHP強(qiáng))外,還可以直觀地支持Model層,并且可以輕松地使用Loader函數(shù)加載其他新添加的類(lèi)
7.緩存功能非常強(qiáng)大,從前端緩存到后端緩存均受支持,后端緩存支持Memcache,APC,SQLite,文件等。
8.數(shù)據(jù)庫(kù)操作功能非常強(qiáng)大,并且支持各種驅(qū)動(dòng)程序(適配器)
9.具有完整的文檔,并且在國(guó)內(nèi)社區(qū)中已經(jīng)成熟
缺點(diǎn):
1. MVC功能相對(duì)較弱,View層易于實(shí)現(xiàn)(與未實(shí)現(xiàn)相同),并且無(wú)法非常強(qiáng)大地控制前端頁(yè)面。
2.沒(méi)有自動(dòng)腳本。要?jiǎng)?chuàng)建包括入口文件的應(yīng)用程序,所有文件都必須由您自己手動(dòng)構(gòu)建,因此入門(mén)成本很高。
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)論:
作為一個(gè)官方框架,Zend Framework的雄心是可以預(yù)見(jiàn)的。它希望壓縮其他框架,同時(shí)封裝許多功能強(qiáng)大的類(lèi)庫(kù),這些類(lèi)庫(kù)可以提供一站式框架服務(wù),并且他們的開(kāi)發(fā)團(tuán)隊(duì)非常強(qiáng)大。它完全有能力開(kāi)發(fā)非常強(qiáng)大的產(chǎn)品,因此,如果可以花更多的時(shí)間來(lái)完善Zend Framework,則可以肯定的是Zend Framework的前景廣闊。同樣,Zend Framework體系結(jié)構(gòu)本身也相對(duì)優(yōu)雅,這表明Zend官員擁有許多大師,并且設(shè)計(jì)概念相對(duì)先進(jìn)。盡管某些功能尚未完全實(shí)現(xiàn),例如視圖層,自動(dòng)腳本等,但這些功能都取決于未來(lái)。升級(jí)
六、CakePHP
優(yōu)點(diǎn):
1.與RoR最相似的框架,包括設(shè)計(jì)方法,數(shù)據(jù)庫(kù)操作的Active Record方法
2.設(shè)計(jì)水平非常優(yōu)雅,沒(méi)有額外的庫(kù),所有功能都是純框架,執(zhí)行效率還不錯(cuò)
3.數(shù)據(jù)庫(kù)層的hasOne和hasMany功能非常強(qiáng)大,更適合復(fù)雜的業(yè)務(wù)處理
4.路由功能,配置功能適度困難
5.自動(dòng)腳手架非常強(qiáng)大,適合中型應(yīng)用
6.基本上已經(jīng)實(shí)現(xiàn)了MVC的每一層
7.具有自動(dòng)操作命令行腳本的功能
8.全面的文檔,中等的學(xué)習(xí)成本
缺點(diǎn):
1. CakePHP的一個(gè)非常嚴(yán)重的問(wèn)題是,它將Model理解為數(shù)據(jù)庫(kù)層操作,這嚴(yán)重影響了除數(shù)據(jù)庫(kù)之外的操作能力
2.緩存功能略弱
3.配置功能稍弱
4.不適合大規(guī)模應(yīng)用,僅適合中型應(yīng)用。對(duì)于小型應(yīng)用程序,學(xué)習(xí)成本會(huì)更高。
評(píng)論:
通常,CakePHP框架代表著一個(gè)非常重要的時(shí)代,并且代表了PHP框架,并且目前正在發(fā)揮非常重要的作用。他們自己編寫(xiě)的許多框架都模仿CakePHP成為里程碑產(chǎn)品的方式。 CakePHP揭示了RoR的敏捷開(kāi)發(fā)方法和將數(shù)據(jù)庫(kù)操作視為唯一模型的設(shè)計(jì)思想是開(kāi)發(fā)快速應(yīng)用程序和原型的出色工具;同樣,也值得選擇成為Web 2. 0網(wǎng)站的開(kāi)發(fā)框架。
七、Symfony
優(yōu)點(diǎn):
1.完全實(shí)現(xiàn)三層MVC
2.封裝了所有內(nèi)容,包括
獲取數(shù)據(jù),異常處理,調(diào)試功能,數(shù)據(jù)檢測(cè)
3.包含強(qiáng)大的緩存功能
4.自動(dòng)加載Class,并且可以隨意定義各種自己的類(lèi)
5.強(qiáng)大的語(yǔ)言支持
6.具有非常強(qiáng)大的視圖層操作,可以分段包含多個(gè)文件
7.非常強(qiáng)大的配置功能,使用xml配置可以控制所有框架和程序的運(yùn)行行為
8.包含強(qiáng)大的多層項(xiàng)目和應(yīng)用程序管理:項(xiàng)目->應(yīng)用程序->模塊->動(dòng)作,可以滿(mǎn)足一個(gè)項(xiàng)目下多個(gè)應(yīng)用程序的需求,并且每一層都可以定義自己的類(lèi)庫(kù),配置文件,布局
9.非常強(qiáng)大的命令行操作功能,包括構(gòu)建項(xiàng)目,構(gòu)建應(yīng)用程序,構(gòu)建模塊,刷新緩存等。
10.Symfony絕對(duì)是開(kāi)發(fā)大型復(fù)雜項(xiàng)目的首選,因?yàn)槭褂肧ymfony可以大大節(jié)省開(kāi)發(fā)成本,并且當(dāng)多人協(xié)作時(shí)不會(huì)出現(xiàn)問(wèn)題。在項(xiàng)目級(jí)別定義基本類(lèi)之后,可以重用任何模塊,從而大大地重用了代碼。
缺點(diǎn):
1.的最大問(wèn)題是太多的具有不同樣式的開(kāi)源項(xiàng)目被用于形成框架
2.由于Mojavi和Propel都很復(fù)雜,因此Symfony的結(jié)構(gòu)非常復(fù)雜,難以理解和學(xué)習(xí)
無(wú)法控制緩存功能。每當(dāng)您進(jìn)行開(kāi)發(fā)和調(diào)試時(shí),它始終會(huì)被緩存,您需要執(zhí)行symfony cc,symfony rc來(lái)清除和重建緩存
4.效率不是很高,尤其是在解析模板和讀取配置文件的過(guò)程中,這需要很多時(shí)間
5.學(xué)習(xí)成本很高,而且在中國(guó)還沒(méi)有成熟的社區(qū)和中文文檔
評(píng)論:
Symfony絕對(duì)是一個(gè)企業(yè)級(jí)框架,似乎唯一可以與Java領(lǐng)域強(qiáng)大的框架競(jìng)爭(zhēng)的東西。強(qiáng)大的功能自然很難學(xué)習(xí),但是相應(yīng)的功能也對(duì)項(xiàng)目開(kāi)發(fā)更有幫助。自然php框架比較,建議使用Symfony進(jìn)行復(fù)雜的項(xiàng)目進(jìn)行處理,我認(rèn)為這是值得的,后期的維護(hù)成本相對(duì)較低,可重用性很強(qiáng)。相應(yīng)地,如果將Symfony用于更復(fù)雜的Internet項(xiàng)目,則必須相應(yīng)地考慮數(shù)據(jù)庫(kù)分發(fā)的問(wèn)題,然后需要丟棄Symfony隨附的數(shù)據(jù)庫(kù)操作層,并且需要自己定義。當(dāng)然,Symfony支持任意的Construct模型層
一般評(píng)論:
以上幾個(gè)框架都有自己的特點(diǎn),都是開(kāi)放源代碼項(xiàng)目,但是框架所針對(duì)的項(xiàng)目并不相同。一般來(lái)說(shuō):
1.小型項(xiàng)目:CodeIngiter
2.中型項(xiàng)目:CakePHP,Zend Framework,Laravel,Thinkphp
3.大型重量級(jí)項(xiàng)目:Yii,Symfony,Laravel
以上劃分不是絕對(duì)的。選擇項(xiàng)目時(shí),我們必須充分考慮框架的自定義和可伸縮性,因?yàn)槊總€(gè)項(xiàng)目都無(wú)法確定是否會(huì)隨需求的變化而變化