ThinkPHP的发展历程及特性
ThinkPHP,是為了簡化企業級應用開發和敏捷WEB應用開發而誕生的開源輕量級PHP框架。
最早誕生于2006年初,2007年元旦正式更名為ThinkPHP,并且遵循Apache2開源協議發布。ThinkPHP從誕生以來一直秉承簡潔實用的設計原則,在保持出色的性能和至簡的代碼的同時,也注重易用性。并且擁有眾多原創功能和特性,在社區團隊的積極參與下,在易用性、擴展性和性能方面不斷優化和改進。?[1]?
ThinkPHP是一個快速、兼容而且簡單的輕量級國產PHP開發框架,誕生于2006年初,原名FCS,2007年元旦正式更名為ThinkPHP,遵循Apache2開源協議發布,從Struts結構移植過來并做了改進和完善,同時也借鑒了國外很多優秀的框架和模式,使用面向對象的開發結構和MVC模式,融合了Struts的思想和TagLib(標簽庫)、RoR的ORM映射和ActiveRecord模式。
ThinkPHP可以支持windows/Unix/Linux等服務器環境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite多種數據庫以及PDO擴展,ThinkPHP框架本身沒有什么特別模塊要求,具體的應用系統運行環境要求視開發所涉及的模塊。
作為一個整體開發解決方案,ThinkPHP能夠解決應用開發中的大多數需要,因為其自身包含了底層架構、兼容處理、基類庫、數據庫訪問層、模板引擎、緩存機制、插件機制、角色認證、表單處理等常用的組件,并且對于跨版本、跨平臺和跨數據庫移植都比較方便。并且每個組件都是精心設計和完善的,應用開發過程僅僅需要關注您的業務邏輯。
ThinkPHP發展歷程,無數TPer一起見證了ThinkPHP的成長:
2006年01月15日, ThinkPHP的雛形版本FCS0.6.0發布;
2006年02月12日,(元宵節)發布FCS 0.6.1 版本,Google討論組成立;
2006年03月15日, FCS 0.7.0版本發布;
2006年05月07日, FCS 0.8版本發布;
2006年10月25日, FCS 0.9.0版本發布;
2006年12月25 日,SF項目和Google網站ThinkPHP項目申請完成;
2007年01月01日, FCS正式更名為ThinkPHP;
2007年01月08日, ThinkPHP 0.9.5版發布同期官方網站開通;
2007年02月21日, TOPThink社區暨新版ThinkPHP官方網站開通,并提供社區支持;
2007年02月25日, 發布ThinkPHP 0.9.6版本,完成FCS到ThinkPHP的正式遷移;
2007年04月29日, ThinkPHP發布0.9.7版本;
2007年07月01日, ThinkPHP發布0.9.8版本;
2007年10月15 日,ThinkPHP發布1.0.0RC1版本,完成PHP5的重構;
2007年12月15 日,ThinkPHP發布1.0.0正式版本標志著ThinkPHP步入軌道;
2008年10月01日, ThinkPHP發布1.0.3正式版本;
2008年12月25 日,ThinkPHP發布1.5正式版本并啟動商業化支持服務,ThinkPHP進入穩定發展;
2009年05月01日, ThinkPHP 發布1.6.0RC1版本;
2009年10月01日, ThinkPHP發布2.0版本完成新的重構和飛躍,這是一次劃時代的版本;
2012年04月05日, ThinkPHP發布3.0版本 慶祝ThinkPHP發布6周年;
2012年10月08日, ThinkPHP發布3.1版本;
2012年11月11日, ThinkPHP3.1.2擴展包;
2013年05月09日,ThinkPHP發布3.1.3完整版;
2013年12月18日,ThinkPHP發布3.2正式版;
2014年10月31日,ThinkPHP發布3.2.2完整版?[2]??;
2015年12月11日,ThinkPHP 5.0 Beta 發布;
2017年02月27日,Thinkphp5.0.5完整版正式發布?[3]??;
2018年05月02日,Thinkphp5.1.0RC版本發布;?[4]?
2019年04月22日,Thinkphp6.0RC2版本發布?[5]??;
2019年08月16日,Thinkphp6.0RC4版本發布?[6]??;
2019年12月24日,Thinkphp6.0.1版本發布?[7]??;
簡單易用
模型(M):模型的定義由Model類來完成。Model類位于項目目錄下面的LibModel目錄。
THINKPHP初始頁面
控制器(C):應用控制器(核心控制器)和Action控制器都承擔了控制器的角色,區別在于Action控制器完成業務過程,而應用控制器(App類)負責調度控制。Action控制器位于項目目錄下面的LibAction目錄。
視圖(V):模板的實現是和框架無關的,做到了100%分離,可以獨立預覽和制作。模板目錄位于項目目錄下面的Tpl目錄。
獨創機制
ThinkTemplate是一個使用了XML標簽庫技術的編譯型模板引擎,支持兩種類型的模板標簽,使用了動態編譯和緩存技術,而且支持自定義標簽庫。其特點包括:
1)支持XML標簽庫和普通標簽的混合定義;
2)編譯一次,下次直接運行而無需重新編譯;
3)模板文件更新后,自動更新模板緩存;
4)自動加載當前操作的模板緩存文件,無需指定模板文件名稱;
5)支持編碼轉換和Content-Type更換;
THINKPHP目錄結構
6)模板變量輸出前綴支持,避免變量名稱沖突;
7)模板常量替換,無需設置模板變量;
8)支持變量組合調節器和格式化功能;
9)支持替換其它模板引擎插件使用;
10)支持獲取模板頁面內容。
內置XML模板引擎,支持標簽庫
富模型支持
1)聚合模型:
聚合模型是一種虛擬模型,用于把數據表的字段抽象化,更加容易理解和操作。
我們可以把數據表中的某些屬性進行數據封裝,這樣就把枯燥的數據表字段賦予更好的可讀性。
2)靜態模型:
靜態模型可以讓模型的數據靜態化,而不需要頻繁和數據庫打交道,可以用于不經常改變的數據表。而且ThinkPHP在ORM層上面模擬實現了數據庫的視圖功能,這是ThinkPHP獨創的一項技術,使得多表的關聯查詢具有更高的效率和可操作性,而無需定義復雜的關聯關系,讓關聯關系更加淺顯易懂。
有些時候,數據表的數據一旦添加后就不再容易變化,我們更希望把這樣的模型數據靜態化,而不需要再次訪問數據庫。ThinkPHP支持靜態模型的概念,一旦把模型設置為靜態,那么會在第一次初始化的時候獲取數據表的全部數據,并生成緩存,以后不會再連接數據庫。而只需要直接訪問模型的dataList數據即可。
3)視圖模型
ThinkPHP在ORM模型里面模擬實現了數據庫的視圖模型,該功能可以用于多表查詢。
要定義視圖對象,需要設置viewModel為true,然后設置viewFields屬性即可。
CURD和操作高度自動化支持
ThinkPHP提供了靈活和方便的數據操作方法,不僅實現了對數據庫操作的四大基本操作(CURD):創建、讀取、更新和刪除的實現,還內置了很多實用的數據操作方法,提供了ActiveRecords模式的最佳體驗。
豐富的查詢語言支持
ThinkPHP大多數情況使用的都是對象查詢,因為充分利用了ORM查詢語言,了解查詢條件的定義對使用對象查詢非常有幫助,對于復雜的查詢,或者從安全方面考慮,可以使用HashMap對象或者索引數組來傳遞查詢條件。
目錄結構自動創建THINKPHP目錄結構
ThinkPHP具有項目目錄自動創建功能,你只需要定義好項目的入口文件,第一次執行入口文件的時候,系統會自動創建項目的相關目錄結構,如果是linux環境下面需要給項目入口文件里面指定的路徑設置可寫權限。
分布式數據庫支持
ThinkPHP的模型支持主從式數據庫的連接,配置DB_DEPLOY_TYPE為1可以采用分布式數據庫支持。
?
多數據庫連接和切換支持
如果需要在特殊的時候連接多個數據庫,那么可以嘗試使用ThinkPHP的多數據庫連接特性:包括相同類型的數據庫和不同類型的數據庫。(注意:所謂的相同類型數據庫的定義是指和項目配置文件或者模型的數據庫連接的數據庫類型相同。)
ActiveRecords模式和豐富的ROR特性
ThinkPHP實現了ActiveRecords模式的ORM模型,采用了非標準的ORM模型:表映射到類,記錄(集)映射到對象,字段屬性映射到對象的虛擬屬性。最大的特點就是使用方便,從而達到敏捷開發的目的。
靈活簡單的項目配置
ThinkPHP提供了靈活的配置功能,采用最有效率的PHP返回數組方式定義,支持慣例配置、項目配置、調試配置和模塊配置,并且會自動生成配置緩存文件,無需重復解析的開銷。對于有些簡單的應用,你無需配置任何配置文件,而對于復雜的要求,你還可以增加模塊配置文件,另外ThinkPHP的動態配置使得你在開發過程中可以靈活的調整配置參數。
ThinkPHP在項目配置上面創造了自己獨有的分層配置模式,其配置層次體現在:慣例配置-->項目配置-->模塊配置-->操作(動態)配置,優先順序從右到左(在沒有生效的前提下)。
模型自動驗證和處理
系統內置了數據對象的自動驗證功能,而大多數情況下面,數據對象是由表單提交的$_POST數據創建。需要使用系統的自動驗證功能,只需要在Model類里面定義$_validate屬性,是由多個驗證因子組成的數組,支持的驗證因子格式:驗證字段,驗證規則,錯誤提示,驗證條件,附加規則,驗證時間。
靜態頁面生成和多元化緩存機制
ThinkPHP內置了靜態緩存的功能,并且支持靜態緩存的規則定義。要使用靜態緩存功能,需要開啟HTML_CACHE_ON參數,并且在項目配置目錄下面增加靜態緩存規則文件htmls.php。
豐富的數據庫及PDO支持
SEO和URL路由支持
AJAX支持
易擴展的系統基類庫
系統基類庫
ThinkPHP框架通過基類庫的概念把所有系統類庫都集成在一起,包括ThinkPHP的核心類庫。
基類庫分成Think核心類庫、ORG擴展類庫,在這主要介紹的是核心基類庫,核心基類庫的作用是完成框架的通用性開發而必須的基礎類和常用工具類等,包含有:
Think.Core 核心類庫包
Think.Db 數據庫類庫包
Think.Util?系統工具類庫包
Think.Template 內置模板引擎類庫包
Think.Exception 異常處理類庫包函數庫
ThinkPHP內置了一個系統公共函數庫,提供了一些系統需要的函數,系統函數庫位于ThinkPHP的Common目錄下面,名稱為functions.php。
每個項目可以定義自己的函數庫,位于項目的Common目錄下面的common.php文件。
如果項目在Common目錄下面有定義自己的common.php文件,框架會在初始化的時候自動導入,而無需自己導入。
匹配導入
Import方法是ThinkPHP內建的類庫和文件導入方法,提供了方便和靈活的類似于命名空間的文件導入機制。
自動編碼轉換
ThinkPHP框架的文件全部采用UTF-8編碼格式,UTF-8的支持和自動輸出編碼轉換的功能讓頁面表現更加靈活。您可以配置輸出的頁面編碼格式,如gb2312等(默認采用UTF-8輸出)。系統根據配置文件中設置的編碼格式自動對頁面進行編碼轉換,支持iconv和mb_string兩種方式,為了提高效率,如果系統的模板編碼設置和輸出編碼設置項相同,則不會進行編碼轉換。ThinkPHP可以設置模板編碼、輸出編碼和數據庫編碼,并自動完成轉換工作,讓你的應用不再受編碼的苦惱。
總結
以上是生活随笔為你收集整理的ThinkPHP的发展历程及特性的全部內容,希望文章能夠幫你解決所遇到的問題。