1. 程式人生 > >常見的框架 優缺點簡介

常見的框架 優缺點簡介

Tp

優點

1、高階模型:可以輕鬆支援序列化欄位、文字欄位、只讀欄位、延遲寫入、樂觀鎖、資料分表等高階特性。

   2、檢視模型:輕鬆動態地建立資料庫檢視,多表查詢相對簡單。

   3、關聯模型:讓你以出乎意料的簡單、靈活的方式完成多表的關聯操作。

  4、模板引擎:系統內建了一款卓越的基於XML的編譯型模板引擎,支援兩種型別的模板標籤,融合了Smarty和JSP標籤庫的思想,支援標籤庫擴充套件。通過驅動還可以支援Smarty、EaseTemplate、TemplateLite、Smart等第三方模板引擎。

  5、快取機制:系統支援包括檔案方式、APC、Db、Memcache、Shmop、Eaccelerator和Xcache在內的多種動態資料快取型別,以及可定製的靜態快取規則,並提供了快捷方法進行存取操作。

  6、類庫匯入:ThinkPHP是首先採用基於類庫包和名稱空間的方式匯入類庫,讓類庫匯入看起來更加簡單清晰,而且還支援衝突檢測和別名匯入。為了方便專案的跨平臺移植,系統還可以嚴格檢查載入檔案的大小寫。

  7、擴充套件機制:系統支援包括類庫擴充套件、驅動擴充套件、應用擴充套件、模型擴充套件、控制器擴充套件、標籤庫擴充套件、模板引擎擴充套件、Widget擴充套件、行為擴充套件和模式擴充套件在內的強大靈活的擴充套件機制,讓你不再受限於核心的不足和無所適從,隨心DIY自己的框架和擴充套件應用。

  8、URL模式:系統支援普通模式、PATHINFO模式、REWRITE模式和相容模式的URL方式,支援不同的伺服器和執行模式的部署,配合URL路由功能,讓你隨心所欲的構建需要的URL地址和進行SEO優化工作。

  9、編譯機制:獨創的核心編譯和專案的動態編譯機制,有效減少OOP開發中檔案載入的效能開銷。ALLINONE模式更是讓你體驗飛一般的感覺。

  10、ORM:簡潔輕巧的ORM實現,配合簡單的CURD以及AR模式,讓開發效率無處不在。

  11、查詢語言:內建豐富的查詢機制,包括組合查詢、複合查詢、區間查詢、統計查詢、定位查詢、動態查詢和原生查詢,讓你的資料查詢簡潔高效。

  12、動態模型:無需建立任何對應的模型類,輕鬆完成CURD操作,支援多種模型之間的動態切換,讓你領略資料操作的無比暢快和最佳體驗。

  13、分組模組:不用擔心大專案的分工協調和部署問題,分組模組幫你解決跨專案的難題。

  14、AJAX支援:內建AJAX資料返回方法,支援JSON、XML和EVAL格式返回客戶端,並且系統不繫結任何AJAX類庫,可隨意使用自己熟悉的AJAX類庫進行操作。

  15、多語言支援:系統支援語言包功能,專案和模組都可以有單獨的語言包,並且可以自動檢測瀏覽器語言自動載入對應的語言包。

  16、模式擴充套件:除了標準模式外,系統內建了Lite、Thin和Cli模式,針對不同級別的應用開發提供最佳核心框架,還可以自定義模式擴充套件。

  17、自動驗證和完成:自動完成表單資料的驗證和過濾,生成安全的資料物件。

  18、欄位型別檢測:欄位型別強制轉換,確保資料寫入和查詢更安全。

  19、資料庫特性:系統支援多資料庫連線和動態切換機制,支援分散式資料庫。猶如企業開發的一把利刃,跨資料庫應用和分散式支援從此無憂。

缺點

1.麻煩的URL路由 正常模式: URL -> URL路由 -> 將從URL解析得到的引數和請求傳遞給入口函式 TP的實現(以正則路由為例):正則 -> 入口檔案 + 動態引數如:'/^blog\/(\d+)$/' => 'Blog/read?id=:1' 簡潔的實現:'/^blog\/(\d+)$/' => read // function read($id) {...} 此實現便於檢查路由規則與入口函式的匹配性並使使用者更加方便的使用解析後的URL引數,同時,TP的入口檔案設計本就是多此一舉。 2.2.糟糕的模型設計 *1 需要手動建立模型與資料庫的關聯缺點:需要進行一系列不必要的配置,與定義模型後自動生成資料庫表的行為相悖。 *2 對資料庫的抽象遠遠不夠操作模型時...

odeIgniter簡稱CI

配置簡單,

上手很快,

全部的配置使用PHP指令碼來配置,

沒有使用很多太複雜的設計模式,(MVC設計模式)

執行效能和程式碼可讀性上都不錯,

執行效率比較高,具有基本的MVC 功能.

快速簡潔,程式碼量少,框架簡單,容易上手,自帶了很多簡單好用的library,

框架適合中小型專案,

大型專案也不是不可以,

只是擴充套件能力稍差。

ThinkPHP簡稱TP

TP借鑑了Java思想,基於PHP5,

充分利用了PHP5的特性,

部署簡單隻需一個入口檔案,一切搞定,簡單高效,

中文文件齊全,入門超級簡單。

自帶模板引擎,具有獨特的資料驗證和自動填充功能,框架更新速度比較迅速,目前最新版本是3.x。

Yii框架:

Yii是國際化的專案,純面向物件的框架

支援php的名稱空間和自定義autoload的方法

支援多配置檔案

自帶環境監測指令碼

框架特點:

Yii的元件思路是非常不錯的,用起來十分地舒服。從session到cache,你可以無縫地更換所有的元件而無需重構專案。而且Yii的延遲載入也做得比較徹底,每個元件都是用到的時候才載入。比如,TP中,如果配置了session自動開啟,則TP在應用初始化的時候執行 session_start()。而Yii則是你用到session的時候才打開session。

  CodeIgniter(CI)

面試常見問題之ZF、TP、CI等框架的區別 - 最強大腦 - 最強大腦的部落格

  優點:

  1. 配置簡單,全部的配置使用PHP指令碼來配置,執行效率高;具有基本的路由功能,能夠進行一定程度的路由;具有初步的Layout(佈局)功能,能夠製作一定程度的介面外觀;資料庫層封裝的不錯,具有基本的MVC功能

  2. 快速簡潔,程式碼不多,執行效能高,PHP框架簡單,容易上手,學習成本低,文件詳細;自帶了很多簡單好用的library,框架適合小型應用

  缺點:

  1. 把Model層簡單的理解為資料庫操作

  2. PHP框架略顯簡單,只能夠滿足小型應用,略微不太能夠滿足中型應用需要

  評價:

  總體來說,拿CodeIgniter來完成簡單快速的應用還是值得,同時能夠構造一定程度的layout(佈局),便於模板的複用,資料操作層來說封裝的不錯,並且CodeIgniter沒有使用很多太複雜的設計模式,執行效能和程式碼可讀性上都不錯。至於附加的 library 也還不錯,簡潔高效。

  CakePHP

面試常見問題之ZF、TP、CI等框架的區別 - 最強大腦 - 最強大腦的部落格

  優點:

  1. CakePHP是最類似於RoR的PHP框架,包括設計方式,資料庫操作的Active Record方式;設計層面很優雅,沒有自帶多餘的 library,所有的功能都是純粹的框架,執行效率還不錯;資料庫層的 hasOne, hasMany 功能很強大,對於複雜業務處理比較合適;路由功能,配置功能還不錯;自動構建腳手架(scaffold)很強大;適合中型應用;基本實現過了MVC每一層;具有自動操作命令列指令碼功能;

  2. 文件比較全,在國內推廣的比較成功,大部分都知道CakePHP,學習成本中等

  缺點:

  1. CakePHP非常嚴重的問題是把Model理解為資料庫層操作,嚴重影響了除了資料庫之外的操作能力

  2. CakePHP的cache功能略顯薄弱,配置功能稍嫌弱;CakePHP不適合大型應用,只適合中型應用,小型應用來說略微的學習成本高了點

  評價:

  總體來說CakePHP框架代表了PHP框架很重要的一個時代和代表,並且目前發揮著很重要的作用,不少自己寫的框架都模仿了CakePHP的方式,是個里程碑式的產品;CakePHP透露著RoR的敏捷開發方式和把資料庫操作認為是唯一Model的設計思想,作為開發快速應用和原型是絕好的工具;同樣,用來做Web2.0網站的開發框架,也是值得選擇的。

  Zend Framework(ZF)

面試常見問題之ZF、TP、CI等框架的區別 - 最強大腦 - 最強大腦的部落格

  優點:

  1. 官方出品,自帶了非常多的 library,框架本身使用了很多設計模式來編寫,架構上很優雅,執行效率中等;MVC設計中,比較簡潔,具有路由功能,配置檔案比較強大(能夠處理 XML和php INI),各種library 很強大,是所有PHP框架中各種功能最全面的,包括它不僅是一個PHP框架,更是一個大類庫(取代PEAR),這是它的主要特色;能夠直觀的支援除資料庫操作之外的Model層(比 CodeIgniter 和 CakePHP 強),並且能夠很輕易的使用Loader功能載入其他新增加的Class;Cache功能很強大,從前端Cache到後端Cache都支援,後端 Cache支援Memcache、APC、SQLite、檔案等等方式;資料庫操作功能很強大,支援各種驅動(介面卡)

  2. 文件很全,在國內社群很成熟,並且目前不少Web 2.0網站在使用,學習成本中等

  缺點:

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

  2. 沒有自動化指令碼,建立一個應用,包括入口檔案,全部必須自己手工構建,入門成本高

  3. Zend Framework 作為一箇中型應用框架問題不大,也能夠勉強作為大型應用的PHP框架,但是作為一個很成熟的大型PHP框架來說,還需要一些努力

  評價:

  作為官方出品的框架,Zend Framework的野心是可以預見的,想把其他框架擠走,同時封裝很多強大的類庫,能夠提供一站式的框架服務,並且他們的開發團隊很強大,完全足夠有能力開發很強大的產品出來,所以基本可以確定的是Zend Framework前途無量,如果花費更多的時間去完善框架。同樣的,Zend Framework架構本身也是比較優雅的,說明Zend官方是有很多高手的,設計理念上比較先進,雖然有一些功能實現的不夠完善,比如View層,自動化指令碼等等,這些都有賴於未來的升級。總體來說Zend Framework是最值得期待的PHP框架,當然,你目前要投入你的專案中使用也是完全沒問題的。

  Symfony

面試常見問題之ZF、TP、CI等框架的區別 - 最強大腦 - 最強大腦的部落格

  優點

  1. Symfony 是我瞭解的PHP框架中功能最強大的,而且我使用時間比較長,但是很多功能還是沒有挖掘出來;它完整實現了MVC三層,封裝了所有東西,包括 $_POST,$_GET 資料,異常處理,除錯功能,資料檢測;包含強大的快取功能,自動載入Class(這個功能很爽),強大的i18n國家化支援;具有很強大的view層操作,能夠零碎的包含單個多個檔案;非常強大的配置功能,使用yml配置能夠控制所有框架和程式執行行為,強大到讓人無語;能夠很隨意的定義各種自己的 class,並且symfony能夠自動載入(auto load)這些class,能夠在程式中隨意呼叫;包含強大的多層級專案和應用管理:Project --> Application --> Module --> Action,能夠滿足一個專案下多個應用的需要,並且每層可以定義自己的類庫,配置檔案,layout;非常強大的命令列操作功能,包括建立專案、建立應用、建立模組、重新整理快取等等;

  2. Symfony絕對是開發大型複雜專案的首選,因為使用了Symfony,將大大節約開發成本,並且多人協作的時候,不會出現問題,在Project級別定義好基礎Class以後,任何模組都能夠重用,大大複用程式碼

  缺點:

  1. 資料庫操作model採用了重量級的propel和creole,不過在我測試的版本中已經把他們移到了addon裡,可用可不用

  2. 快取功能無法控制,每次開發除錯總是快取,需要執行 symfony cc, symfony rc 來清除和重建快取;

  3. 效率不是很高,特別是解析模板和讀取配置檔案的過程,花費時間不少;

  4. 學習成本很高,並且國內沒有成熟的社群和文件,連中文手冊都沒有,相應的要掌握所有功能,需要花費比較多的時間

  評價:

  Symfony絕對是企業級的PHP框架,唯一能夠貌似能夠跟Java領域哪些強悍框架抗衡的東西;強悍的東西,自然學習複雜,但是相應的對專案開發也比較有幫助,自然是推薦複雜的專案使用Symfony來處理,覺得是值得,後期的維護成本比較低,複用性很強。相應的如果使用Symfony的應該都是比較複雜的網際網路專案,那麼相應的就要考慮關於資料庫分佈的問題,那麼就需要拋棄Symfony自帶的資料庫操作層,需要自己定義,當然了,Symfony支援隨意的構造model層。

  總結

  以上數款PHP框架,各有特色,而且都是開源專案,不過框架針對的專案不一樣,一般來說 CodeIngiter 比較適合小型專案,CakePHP 和 Zend Framework 比較適合中型專案,Symfony 比較適合大型重量級專案,在專案選型的時候,要充分考慮框架的可以定製性、擴充套件性,因為每個專案都無法確定你是否會隨著需求的變化進行改變。

  相對來說,Zend Framework 和 Symfony 應對變化的能力比較強,特別是能夠隨意定製 model 層的Class,能夠非常方便增加自己業務或者資料處理類,我是個人比較推薦在中大型專案中使用的PHP框架。

  CodeIngiter 和 CakePHP 在中小型專案中同樣能夠發揮重大作用,快速開發和原型構建,非常適合目標不清晰的原型專案的開發

相關推薦

常見框架 優缺點簡介

Tp 優點 1、高階模型:可以輕鬆支援序列化欄位、文字欄位、只讀欄位、延遲寫入、樂觀鎖、資料分表等高階特性。    2、檢視模型:輕鬆動態地建立資料庫檢視,多表查詢相對簡單。    3、關聯模型:讓你以出乎意料的簡單、靈活的方式完成多表的關聯操作。   4、模板引

【PHP常見面試題 PHP框架基礎-常見框架特性】PHP框架有哪些?你用過哪些?各自的優缺點是什麼?

一、考點 1、PHP框架的差異和優缺點 1)Yaf 框架 Yaf 使用PHP擴充套件的形式寫的一個PHP框架,也就是以C語言為底層編寫的,效能上要比PHP程式碼寫的框架要快一個數量級。 優點:執行效率高、輕量級框架、可擴充套件性強。 缺點:高版本相容性差、底

vue框架優缺點對比

實現 帶來 組件 狀態 虛擬 輕量級 路由 體積 項目 Vue和React不同點: 1)Vue:1.模版和渲染函數的彈性選擇 2.簡單的語法及項目創建 3.更快的選軟速度和更小的體積 2)React: 1.更適用於大型應用和更好的可測試性 2.同時適用web端和原生App

開源的API文檔工具框架——Swagger簡介

前後端 中文意思 自定義模板 簡介 技術點 通過 暫時 des cycle   初次接觸Swagger是在2017年5月,當時公司正好要對整套系統架構進行重新設計,有同事推薦用這個技術框架來規範後臺接口的API文檔。當時因為架構重構,涉及改造的技術點太多,一時也就沒太多精力

Golang 微框架 Gin 簡介

github rec ola 有助於 容易 main函數 pri 響應 open() 框架一直是敏捷開發中的利器,能讓開發者很快的上手並做出應用,甚至有的時候,脫離了框架,一些開發者都不會寫程序了。成長總不會一蹴而就,從寫出程序獲取成就感,再到精通框架,快速構

Java常見框架和工具

clip dea 工具 java安全 ins find rpc 系統 myba 集成開發工具(IDE):Eclipse、MyEclipse、Spring Tool Suite(STS)、Intellij IDEA、NetBeans、JBuilder、JCreator JA

Python學習系列 -- 常見框架

Python的應用場景很多:Web開發、GUI、測試、網路爬蟲、資料分析等等。因此,Python也有很多與之應用場景相對應的框架,今天我們就來一起了解一下。 一、Web應用開發框架 1.Django Django 應該是最出名的Python框架,GAE甚至Erlang都有框架受它影響。D

SpringMVC框架簡介

JavaEE體系結構包括四層,從上到下分別是應用層、Web層、業務層、持久層。Struts和SpringMVC是Web層的框架,Spring是業務層的框架,Hibernate和MyBatis是持久層的框架。 為什麼要使用SpringMVC? 很多應用程式的問題在於處理業務資料的物件和顯示業務

集合框架簡介

集合框架圖板塊簡介 Collection list set Queue HashSet LinkedHashSet TreeSet Iterator LinkIterator Map

spring入門一:框架整體簡介

mil object web開發 spa tor 對象 j2ee 就是 cor 1:spring的基本框架主要包含六大模塊:DAO、ORM、AOP、JEE、WEB、CORE   DAO:(Data Access Object) 數據訪問對象,是一個面向對象的數據庫接口。  

Keras之AutoKeras框架:AutoKeras框架簡介、特點、安裝、使用方法詳細攻略

AutoKeras框架:AutoKeras框架的簡介、特點、使用方法詳細攻略 Paper:《Efficient Neural Architecture Search via Parameter Sharing》 AutoKeras框架的簡介     &nbs

TF之AutoML之AdaNet框架:AdaNet框架簡介、特點、使用方法詳細攻略

 TF之AutoML之AdaNet框架:AdaNet框架的簡介、特點、使用方法詳細攻略   AdaNet框架的簡介         谷歌開源了基於 TensorFlow 的輕量級框架 AdaNet,該框架可以使用少量專家干預

TF之AutoML框架:AutoML框架簡介、特點、使用方法詳細攻略

TF之AutoML框架:AutoML框架的簡介、特點、使用方法詳細攻略       自動化機器學習,簡單來說就是一種自動化任務的方法:預處理並清理資料、選擇並構建適當的功能、選擇合適的模型系列、優化模型超引數、後處理機器學習模型、批判性地分析所獲得的結果。

swagger2-spring-boot-starter自動化配置框架使用簡介

swagger2-spring-boot-starter整合框架使用簡介 簡介 該框架基於swagger2-2.9.2與SpringBoot-2.0.1版本進行搭建,相容SpringBoot2.x以上版本,不相容1.x版本,maven依賴如下: <dependency

常用框架優缺點

1.SpringMVC   中國有句俗話叫“薑還是老的辣”,所以SpringMVC雖然釋出已有十多年,但仍然老當益壯,以絕對的優勢處於領先者的地位。在擁抱完整的MVC框架後,Spring不斷髮展變化,現在已經成為面向Internet應用程式的全面Java框架,為軟體工程師提供了用於Web應用程式

【網路協議-1】常見協議名詞簡介

一些名詞解釋: 1.Socket(套接字): Socket是對TCP/IP協議的封裝,Socket本身並不是協議,而是一個呼叫介面(API),Socket只是為了更方便地使用TCP/IP協議棧而已,是對TCP/IP協議的抽象,提供給我們一些最基本的函式介面。 流式套接字(SOCK_

Java定時框架quartz簡介

我們在寫Java程式中經常會寫一些定時執行的任務,例如每天執行一次什麼方法,幾分鐘或者幾個小時呼叫一次儲存過程等等 Quartz的三個核心概念: 任務:執行工作的內容,Quartz提供job介面來支援任務定義 觸發器:定義觸發job執行的事件觸發規則,Quartz提供Trigger類及其子類支援

Spring Security --- 許可權控制安全框架入門簡介

Spring Security — 許可權控制安全框架入門簡介 一、Spring Security簡介 Spring Security是一個能夠為基於Spring的企業應用系統提供宣告式的安全訪問控制解決方案的安全框架。它提供了一組可以在Spring應用上下文中

微服務框架-SpringCloud簡介

前面一篇文章談到微服務基礎框架,而Netflix的多個開源元件一起正好可以提供完整的分散式微服務基礎架構環境,而對於Spring Cloud正是對Netflix的多個開源元件進一步的封裝而成,同時又實現了和雲端平臺,和Spring Boot開發框架很好的整合。 Spring

持久化框架Mybatis簡介與原理

什麼是Mybatis MyBatis 本是apache的一個開源專案iBatis, 2010年這個專案由apache software foundation 遷移到了google code,並且改名為MyBatis 。iBATIS一詞來源於“interne