php框架對比

yaf

1延旧、用C語言開發(fā)的PHP框架, 相比原生的PHP, 幾乎不會帶來額外的性能開銷.
2谋国、所有的框架類, 不需要編譯, 在PHP啟動的時候加載, 并常駐內(nèi)存.
3、更短的內(nèi)存周轉(zhuǎn)周期, 提高內(nèi)存利用率, 降低內(nèi)存占用率.
4迁沫、靈巧的自動加載. 支持全局和局部兩種加載規(guī)則, 方便類庫共享.
5芦瘾、高性能的視圖引擎.
6闷盔、高度靈活可擴展的框架, 支持自定義視圖引擎, 支持插件, 支持自定義路由等等.
7、內(nèi)建多種路由, 可以兼容目前常見的各種路由協(xié)議.
8旅急、強大而又高度靈活的配置文件支持. 并支持緩存配置文件, 避免復雜的配置結(jié)構(gòu)帶來的性能損失.
9、在框架本身,對危險的操作習慣做了禁止.
10牡整、更快的執(zhí)行速度, 更少的內(nèi)存占用.

tp

<pre class="best-text mb-10">ThinkPHP的優(yōu)缺點如下:
  1藐吮、高級模型:可以輕松支持序列化字段、文本字段逃贝、只讀字段谣辞、延遲寫入、樂觀鎖沐扳、數(shù)據(jù)分表等高級特性泥从。
  2、視圖模型:輕松動態(tài)地創(chuàng)建數(shù)據(jù)庫視圖沪摄,多表查詢相對簡單躯嫉。
  3、關(guān)聯(lián)模型:讓你以出乎意料的簡單杨拐、靈活的方式完成多表的關(guān)聯(lián)操作祈餐。
  4、模板引擎:系統(tǒng)內(nèi)建了一款卓越的基于XML的編譯型模板引擎哄陶,支持兩種類型的模板標簽帆阳,融合了Smarty和JSP標簽庫的思想,支持標簽庫擴展屋吨。通過驅(qū)動還可以支持Smarty蜒谤、EaseTemplate、TemplateLite至扰、Smart等第三方模板引擎鳍徽。
  5、緩存機制:系統(tǒng)支持包括文件方式渊胸、APC旬盯、Db、Memcache翎猛、Shmop胖翰、Eaccelerator和Xcache在內(nèi)的多種動態(tài)數(shù)據(jù)緩存類型,以及可定制的靜態(tài)緩存規(guī)則切厘,并提供了快捷方法進行存取操作萨咳。
  6、類庫導入:ThinkPHP是首先采用基于類庫包和命名空間的方式導入類庫疫稿,讓類庫導入看起來更加簡單清晰培他,而且還支持沖突檢測和別名導入鹃两。為了方便項目的跨平臺移植,系統(tǒng)還可以嚴格檢查加載文件的大小寫舀凛。
  7俊扳、擴展機制:系統(tǒng)支持包括類庫擴展、驅(qū)動擴展猛遍、應用擴展馋记、模型擴展、控制器擴展懊烤、標簽庫擴展梯醒、模板引擎擴展、Widget擴展腌紧、行為擴展和模式擴展在內(nèi)的強大靈活的擴展機制茸习,讓你不再受限于核心的不足和無所適從,隨心DIY自己的框架和擴展應用壁肋。
  8号胚、URL模式:系統(tǒng)支持普通模式、PATHINFO模式墩划、REWRITE模式和兼容模式的URL方式涕刚,支持不同的服務器和運行模式的部署,配合URL路由功能乙帮,讓你隨心所欲的構(gòu)建需要的URL地址和進行SEO優(yōu)化工作杜漠。
  9、編譯機制:獨創(chuàng)的核心編譯和項目的動態(tài)編譯機制察净,有效減少OOP開發(fā)中文件加載的性能開銷驾茴。ALLINONE模式更是讓你體驗飛一般的感覺。
  10氢卡、ORM:簡潔輕巧的ORM實現(xiàn)锈至,配合簡單的CURD以及AR模式,讓開發(fā)效率無處不在译秦。
  11峡捡、查詢語言:內(nèi)建豐富的查詢機制,包括組合查詢筑悴、復合查詢们拙、區(qū)間查詢、統(tǒng)計查詢阁吝、定位查詢砚婆、動態(tài)查詢和原生查詢,讓你的數(shù)據(jù)查詢簡潔高效突勇。
  12装盯、動態(tài)模型:無需創(chuàng)建任何對應的模型類坷虑,輕松完成CURD操作,支持多種模型之間的動態(tài)切換埂奈,讓你領略數(shù)據(jù)操作的無比暢快和最佳體驗迄损。
  13、分組模塊:不用擔心大項目的分工協(xié)調(diào)和部署問題账磺,分組模塊幫你解決跨項目的難題海蔽。
  14、AJAX支持:內(nèi)置AJAX數(shù)據(jù)返回方法绑谣,支持JSON、XML和EVAL格式返回客戶端拗引,并且系統(tǒng)不綁定任何AJAX類庫借宵,可隨意使用自己熟悉的AJAX類庫進行操作。
  15矾削、多語言支持:系統(tǒng)支持語言包功能壤玫,項目和模塊都可以有單獨的語言包,并且可以自動檢測瀏覽器語言自動載入對應的語言包哼凯。

16欲间、模式擴展:除了標準模式外,系統(tǒng)內(nèi)置了Lite断部、Thin和Cli模式猎贴,針對不同級別的應用開發(fā)提供最佳核心框架,還可以自定義模式擴展蝴光。
  17她渴、自動驗證和完成:自動完成表單數(shù)據(jù)的驗證和過濾,生成安全的數(shù)據(jù)對象蔑祟。

18趁耗、字段類型檢測:字段類型強制轉(zhuǎn)換,確保數(shù)據(jù)寫入和查詢更安全疆虚。

19苛败、數(shù)據(jù)庫特性:系統(tǒng)支持多數(shù)據(jù)庫連接和動態(tài)切換機制,支持分布式數(shù)據(jù)庫径簿。猶如企業(yè)開發(fā)的一把利刃罢屈,跨數(shù)據(jù)庫應用和分布式支持從此無憂。</pre>

ci

laravel

YII

一牍帚、ThinkPHP

ThinkPHP(FCS)是一個輕量級的中型框架儡遮,是從Java的Struts結(jié)構(gòu)移植過來的中文PHP開發(fā)框架。它使用面向?qū)ο蟮拈_發(fā)結(jié)構(gòu)和MVC模式暗赶,并且模擬實現(xiàn)了Struts的標簽庫鄙币,各方面都比較人性化肃叶,熟悉J2EE的開發(fā)人員相對比較容易上手,適合php框架初學者十嘿。 ThinkPHP的宗旨是簡化開發(fā)因惭、提高效率、易于擴展绩衷,其在對數(shù)據(jù)庫的支持方面已經(jīng)包括MySQL蹦魔、MSSQL、Sqlite咳燕、PgSQL勿决、 Oracle,以及PDO的支持招盲。ThinkPHP有著豐富的文檔和示例低缩,框架的兼容性較強,但是其功能有限曹货,因此更適合用于中小項目的開發(fā)咆繁。

優(yōu)點

1.借助成熟的Java思想

2.易于上手,有豐富的中文文檔顶籽;學習成本低玩般,社區(qū)活躍度高

3.框架的兼容性較強,PHP4和PHP5完全兼容礼饱、完全支持UTF8等坏为。

4.適合用于中小項目的開發(fā)

5.從thinkphp3.2.2引入composer包管理工具

缺點

1.對Ajax的支持不是很好;

2.目錄結(jié)構(gòu)混亂镊绪,相比其他框架目錄結(jié)構(gòu)要差一點久脯;

3.上手容易,但是深入學習較難镰吆。

二帘撰、Yii

Yii 是一個基于組件的高性能php框架,用于開發(fā)大型Web應用万皿。Yii采用嚴格的OOP編寫摧找,并有著完善的庫引用以及全面的教程。從 MVC牢硅,DAO/ActiveRecord蹬耘,widgets,caching减余,等級式RBAC综苔,Web服務,到主題化,I18N和L10N如筛,Yii提供了 今日Web 2.0應用開發(fā)所需要的幾乎一切功能堡牡。事實上,Yii是最有效率的PHP框架之一杨刨。

優(yōu)點

1.純OOP

2.用于大規(guī)模Web應用

3.模型使用方便

4.開發(fā)速度快晤柄,運行速度也快。性能優(yōu)異且功能豐富

5.使用命令行工具妖胀。

6.支持composer包管理工具

缺點:

1.對Model層的指導和考慮較少

2.文檔實例較少

3.英文太多

4.要求PHP技術(shù)精通芥颈,OOP編程要熟練!

5.View并不是理想view赚抡,理想中的view可能只是html代碼爬坑,不會涉及PHP代碼。

三涂臣、laravel

優(yōu)點

1.laravel的設計思想是很先進的妇垢,非常適合應用各種開發(fā)模式TDD, DDD 和BDD

2.支持composer包管理工具

3.集合了php 比較新的特性,以及各種各樣的設計模式肉康,Ioc 容器,依賴注入等灼舍。

缺點

1.基于組件式的框架吼和,所以比較臃腫

四、CodeIgniter

優(yōu)點:

1.Code Igniter推崇“簡單就是美”這一原則骑素。沒有花哨的設計模式炫乓、沒有華麗的對象結(jié)構(gòu),一切都是那么簡單献丑。幾行代碼就能開始運行末捣,再加幾 行代碼就可以進行輸出〈撮希可謂是“大道至簡”的典范箩做。

2.配置簡單,全部的配置使用PHP腳本來配置妥畏,執(zhí)行效率高邦邦;

3.具有基本的路由功能,能夠進行一定程度的路由醉蚁;

4.具有初步的Layout功能燃辖,能夠制作一定程度的界面外觀;

5.數(shù)據(jù)庫層封裝的不錯网棍,具有基本的MVC功能.

6.快速簡潔黔龟,代碼不多,執(zhí)行性能高,

7.框架簡單氏身,容易上手巍棱,學習成本低,文檔詳細观谦;

8.自帶了很多簡單好用的library拉盾,框架適合小型應用.

缺點:

1.本身的實現(xiàn)不太理想。

2.內(nèi)部結(jié)構(gòu)過于混亂豁状,雖然簡單易用捉偏,但缺乏擴展能力。

3.把Model層簡單的理解為數(shù)據(jù)庫操作.

4.框架略顯簡單泻红,只能夠滿足小型應用夭禽,略微不太能夠滿足中型應用需要.

評價:

總體來說,拿CodeIgniter來完成簡單快速的應用還是值得谊路,同時能夠構(gòu)造一定程度的layout讹躯,便于模板的復用,數(shù)據(jù)操作層來說封裝的不 錯缠劝,并且CodeIgniter沒有使用很多太復雜的設計模式潮梯,執(zhí)行性能和代碼可讀性上都不錯。至于附加的library 也還不錯惨恭,簡潔高效秉馏。

五、Zend Framework

優(yōu)點:

1.大量應用了PHP5中面向?qū)ο蟮男绿卣鳎航涌谕严邸惓B芫俊⒊橄箢悺PL等等锉罐。這些東西的應用讓Zend Framework具有高度的模塊化和靈活性

2.嚴格遵循“針對接口編程”和“單一對象職責”等原則

3.官方出品帆竹,自帶了非常多的library,框架本身使用了很多設計模式來編寫脓规,架構(gòu)上很優(yōu)雅栽连,執(zhí)行效率中等

4.MVC設計,比較簡潔

5.具有路由功能侨舆,配置文件比較強大(能夠處理XML和php INI)

6.能夠直觀的支持除數(shù)據(jù)庫操作之外的Model層(比 CodeIgniter 和 CakePHP 強)升酣,并且能夠很輕易的使用Loader功能加載其他新增加的Class

7.Cache功能很強大,從前端Cache到后端Cache都支持态罪,后端Cache支持Memcache噩茄、APC、SQLite复颈、文件等等方式

8.數(shù)據(jù)庫操作功能很強大绩聘,支持各種驅(qū)動(適配器)

9.文檔很全沥割,在國內(nèi)社區(qū)很成熟

缺點:

1.MVC功能完成比較弱,View層簡單實現(xiàn)(跟沒實現(xiàn)一樣)凿菩,無法很強大的控制前端頁面.

2.沒有自動化腳本机杜,創(chuàng)建一個應用,包括入口文件衅谷,全部必須自己手工構(gòu)建椒拗,入門成本高

3.對于簡單和小型的項目來說,反而因為在框架中應用了大量面向?qū)ο笤O計,對開發(fā)者提出了更高的要求,間接增加了項目的開發(fā)成本

評價:

作為官方出品的框架获黔,Zend Framework的野心是可以預見的蚀苛,想把其他框架擠走,同時封裝很多強大的類庫玷氏,能夠提供一站式的框架服務堵未,并且他們的開發(fā)團隊很強大,完全足夠有能力開發(fā)很強大的產(chǎn)品出來盏触,所以基本可以確定的是Zend Framework前途無量渗蟹,如果花費更多的時間去完善框架。同樣的赞辩,Zend Framework架構(gòu)本身也是比較優(yōu)雅的雌芽,說明Zend官方是有很多高手的,設計理念上比較先進辨嗽,雖然有一些功能實現(xiàn)的不夠完善世落,比如View層,自動化腳本等等召庞,這些都有賴于未來的升級

六、CakePHP

優(yōu)點:

1.最類似于RoR的框架来破,包括設計方式篮灼,數(shù)據(jù)庫操作的Active Record方式

2.設計層面很優(yōu)雅,沒有自帶多余的 library徘禁,所有的功能都是純粹的框架诅诱,執(zhí)行效率還不錯

3.數(shù)據(jù)庫層的 hasOne, hasMany功能很強大,對于復雜業(yè)務處理比較合適

4.路由功能,配置功能難度適中

5.自動構(gòu)建腳手架(scaffold)很強大,適合中型應用

6.基本實現(xiàn)過了MVC每一層

7.具有自動操作命令行腳本功能

8.文檔比較全送朱,學習成本中等

缺點:

1.CakePHP非常嚴重的問題是把Model理解為數(shù)據(jù)庫層操作娘荡,嚴重影響了除了數(shù)據(jù)庫之外的操作能力

2.cache功能略顯薄弱

3.配置功能稍嫌弱

4.不適合大型應用,只適合中型應用驶沼,小型應用來說略微的學習成本高了點.

評價:

總體來說CakePHP框架代表了PHP框架很重要的一個時代和代表炮沐,并且目前發(fā)揮著很重要的作用,不少自己寫的框架都模仿了CakePHP的方式回怜,是個里程碑式的產(chǎn)品大年;CakePHP透露著RoR的敏捷開發(fā)方式和把數(shù)據(jù)庫操作認為是唯一Model的設計思想,作為開發(fā)快速應用和原型是絕好的工具;同樣翔试,用來做Web2.0網(wǎng)站的開發(fā)框架轻要,也是值得選擇的

七、Symfony

優(yōu)點:

1.完整實現(xiàn)了MVC三層

2.封裝了所有東西垦缅,包括 POST冲泥,GET 數(shù)據(jù),異常處理壁涎,調(diào)試功能凡恍,數(shù)據(jù)檢測

3.包含強大的緩存功能

4.自動加載Class,能夠很隨意的定義各種自己的class

5.強大的語言支持

6.具有很強大的view層操作,能夠零碎的包含單個多個文件

7.非常強大的配置功能粹庞,使用xml配置能夠控制所有框架和程序運行行為

8.包含強大的多層級項目和應用管理:Project --> Application --> Module --> Action咳焚,能夠滿足一個項目下多個應用的需要,并且每層可以定義自己的類庫庞溜,配置文件革半,layout

9.非常強大的命令行操作功能,包括建立項目流码、建立應用又官、建立模塊、刷新緩存等等

10.Symfony絕對是開發(fā)大型復雜項目的首選漫试,因為使用了Symfony六敬,將大大節(jié)約開發(fā)成本,并且多人協(xié)作的時候驾荣,不會出現(xiàn)問題外构,在Project級別定義好基礎Class以后,任何模塊都能夠重用播掷,大大復用代碼.

缺點:

1.最大的問題也在于使用了太多風格迥異的開源項目來組合成框架

2.由于Mojavi和Propel本身都相當復雜审编,因此Symfony的結(jié)構(gòu)非常復雜,難以理解和學習

  1. 緩存功能無法控制歧匈,每次開發(fā)調(diào)試總是緩存垒酬,需要執(zhí)行 symfony cc,symfony rc來清除和重建緩存

4.效率不是很高,特別是解析模板和讀取配置文件的過程件炉,花費時間不少

5.學習成本很高勘究,并且國內(nèi)沒有成熟的社區(qū)和中文文檔

評價:

Symfony絕對是企業(yè)級的框架,唯一能夠貌似能夠跟Java領域哪些強悍框架抗衡的東西斟冕;強悍的東西口糕,自然學習復雜,但是相應的對項目開發(fā)也比較有幫助磕蛇,自然是推薦復雜的項目使用Symfony來處理走净,覺得是值得券时,后期的維護成本比較低,復用性很強伏伯。相應的如果使用Symfony的應該都是比較復雜的互聯(lián)網(wǎng)項目橘洞,那么相應的就要考慮關(guān)于數(shù)據(jù)庫分布的問題,那么就需要拋棄Symfony自帶的數(shù)據(jù)庫操作層说搅,需要自己定義炸枣,當然了,Symfony支持隨意的構(gòu)造model層

總評:

以上數(shù)款框架弄唧,各有特色,而且都是開源項目,不過框架針對的項目不一樣适肠,一般來說:

1.小型項目:CodeIngiter

2.中型項目:CakePHP、Zend Framework候引、Laravel侯养、Thinkphp

3.大型重量級項目:Yii、Symfony澄干、Laravel

以上劃分也不絕對逛揩,在項目選型的時候,要充分考慮框架的可以定制性、擴展性麸俘,因為每個項目都無法確定你是否會隨著需求的變化進行改變

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末辩稽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子从媚,更是在濱河造成了極大的恐慌逞泄,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拜效,死亡現(xiàn)場離奇詭異喷众,居然都是意外死亡,警方通過查閱死者的電腦和手機紧憾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門到千,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人稻励,你說我怎么就攤上這事父阻∮” “怎么了望抽?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長履婉。 經(jīng)常有香客問我覆享,道長挽霉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上缤骨,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好妓羊,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著稍计,像睡著了一般躁绸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上臣嚣,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天净刮,我揣著相機與錄音,去河邊找鬼硅则。 笑死淹父,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的怎虫。 我是一名探鬼主播暑认,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼揪垄!你這毒婦竟也來了穷吮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤饥努,失蹤者是張志新(化名)和其女友劉穎捡鱼,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酷愧,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡驾诈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了溶浴。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乍迄。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖士败,靈堂內(nèi)的尸體忽然破棺而出闯两,到底是詐尸還是另有隱情,我是刑警寧澤谅将,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布漾狼,位于F島的核電站,受9級特大地震影響饥臂,放射性物質(zhì)發(fā)生泄漏逊躁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一隅熙、第九天 我趴在偏房一處隱蔽的房頂上張望稽煤。 院中可真熱鬧核芽,春花似錦、人聲如沸酵熙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匾二。三九已至吉懊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間假勿,已是汗流浹背借嗽。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留转培,地道東北人恶导。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像浸须,于是被迫代替她去往敵國和親惨寿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 一删窒、框架概述 課程概述 laravel 4天(之前TP框架還是很大的區(qū)別)(國外框架) 在線教育平臺 6天(lar...
    園草戒閱讀 935評論 0 2
  • 一裂垦、框架概述 課程概述 laravel 4天(之前TP框架還是很大的區(qū)別)(國外框架) 在線教育平臺 6天(lar...
    我愛開發(fā)閱讀 1,437評論 0 5
  • 1. 一、框架概述 2. 課程概述 laravel 4天(之前TP框架還是很大的區(qū)別)(國外框架) 在線教育平臺 ...
    jim1999閱讀 323評論 0 0
  • 一肌索、框架概述 課程概述 laravel 4天(之前TP框架還是很大的區(qū)別)(國外框架) 在線教育平臺 6天(lar...
    大大的世界小小的夢想_97ef閱讀 1,349評論 0 2
  • # 一蕉拢、框架概述 # 課程概述 1. laravel 4天(之前TP框架還是很大的區(qū)別)(國外框架) 2. 在線教...
    關(guān)進一閱讀 362評論 0 0