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.封裝了所有東西垦缅,包括 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)非常復雜,難以理解和學習
- 緩存功能無法控制歧匈,每次開發(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
以上劃分也不絕對逛揩,在項目選型的時候,要充分考慮框架的可以定制性、擴展性麸俘,因為每個項目都無法確定你是否會隨著需求的變化進行改變