ThinkPHP是為了簡化企業(yè)級應(yīng)用開發(fā)和敏捷WEB應(yīng)用開發(fā)而誕生的。最早誕生于2006年初,2007年元旦正式更名為ThinkPHP,并且遵循Apache2開源協(xié)議發(fā)布。ThinkPHP從誕生以來一直秉承簡潔實用的設(shè)計原則,在保持出色的性能和至簡的代碼的同時,也注重易用性。并且擁有眾多原創(chuàng)功能和特性,在社區(qū)團(tuán)隊的積極參與下,在易用性、擴(kuò)展性和性能方面不斷優(yōu)化和改進(jìn)。
ThinkPHP是一個快速、兼容而且簡單的輕量級國產(chǎn)PHP開發(fā)框架,誕生于2006年初,原名FCS,2007年元旦正式更名為ThinkPHP,遵循Apache2開源協(xié)議發(fā)布,從Struts結(jié)構(gòu)移植過來并做了改進(jìn)和完善,同時也借鑒了國外很多優(yōu)秀的框架和模式,使用面向?qū)ο蟮拈_發(fā)結(jié)構(gòu)和MVC模式,融合了Struts的思想和TagLib(標(biāo)簽庫)、RoR的ORM映射和ActiveRecord模式。
ThinkPHP可以支持windows/Unix/Linux等服務(wù)器環(huán)境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite多種數(shù)據(jù)庫以及PDO擴(kuò)展,ThinkPHP框架本身沒有什么特別模塊要求,具體的應(yīng)用系統(tǒng)運行環(huán)境要求視開發(fā)所涉及的模塊。
作為一個整體開發(fā)解決方案,ThinkPHP能夠解決應(yīng)用開發(fā)中的大多數(shù)需要,因為其自身包含了底層架構(gòu)、兼容處理、基類庫、數(shù)據(jù)庫訪問層、模板引擎、緩存機(jī)制、插件機(jī)制、角色認(rèn)證、表單處理等常用的組件,并且對于跨版本、跨平臺和跨數(shù)據(jù)庫移植都比較方便。并且每個組件都是精心設(shè)計和完善的,應(yīng)用開發(fā)過程僅僅需要關(guān)注您的業(yè)務(wù)邏輯。
發(fā)展歷史
ThinkPHP發(fā)展歷程,無數(shù)TPer一起見證了ThinkPHP的成長:
2006年01月15日, ThinkPHP的雛形版本FCS0.6.0發(fā)布;
2006年02月12日,(元宵節(jié))發(fā)布FCS 0.6. 1 版本,谷歌討論組成立;
2006年03月15日, FCS 0.7.0版本發(fā)布;
2006年05月07日, FCS 0.8版本發(fā)布;
2006年10月25日, FCS 0.9.0版本發(fā)布;
2006年12月25 日,SF項目和Google網(wǎng)站ThinkPHP項目申請完成;
2007年01月01日, FCS正式更名為ThinkPHP;
2007年01月08日, ThinkPHP 0.9.5版發(fā)布同期官方網(wǎng)站開通;
2007年02月21日, TOPThink社區(qū)暨新版ThinkPHP官方網(wǎng)站開通,并提供社區(qū)支持;
2007年02月25日,發(fā)布ThinkPHP 0.9.6版本,完成FCS到ThinkPHP的正式遷移;
2007年04月29日, ThinkPHP發(fā)布0.9.7版本;
2007年07月01日, ThinkPHP發(fā)布0.9.8版本;
2007年10月15 日,ThinkPHP發(fā)布1.0.0RC1版本,完成PHP5的重構(gòu);
2007年12月15 日,ThinkPHP發(fā)布1.0.0正式版本標(biāo)志著ThinkPHP步入軌道;
2008年10月01日, ThinkPHP發(fā)布1.0.3正式版本;
2008年12月25 日,ThinkPHP發(fā)布1.5正式版本并啟動商業(yè)化支持服務(wù),ThinkPHP進(jìn)入穩(wěn)定發(fā)展;
2009年05月01日, ThinkPHP 發(fā)布1.6.0RC1版本;
2009年10月01日, ThinkPHP發(fā)布2.0版本完成新的重構(gòu)和飛躍,這是一次劃時代的版本;
2012年04月05日, ThinkPHP發(fā)布3.0版本 慶祝ThinkPHP發(fā)布6周年;
2012年10月08日, ThinkPHP發(fā)布3.1版本;
2012年11月11日, ThinkPHP3.1.2擴(kuò)展包;
2013年05月09日,ThinkPHP發(fā)布3.1.3完整版;
2013年12月18日,ThinkPHP發(fā)布3.2正式版;
2014年10月31日,ThinkPHP發(fā)布3.2.2完整版;
2015年12月11日,ThinkPHP 5.0 Beta 發(fā)布;
2017年02月27日,ThinkPHP5.0.5完整版正式發(fā)布;
2018年05月02日,Thinkphp5.1.0RC版本發(fā)布;
2019年04月22日,Thinkphp6.0RC2版本發(fā)布;
特性
簡單易用
模型(M):模型的定義由Model類來完成。Model類位于項目目錄下面的LibModel目錄。
控制器(C):應(yīng)用控制器(核心控制器)和Action控制器都承擔(dān)了控制器的角色,區(qū)別在于Action控制器完成業(yè)務(wù)過程,而應(yīng)用控制器(App類)負(fù)責(zé)調(diào)度控制。Action控制器位于項目目錄下面的LibAction目錄。
視圖(V):模板的實現(xiàn)是和框架無關(guān)的,做到了100%分離,可以獨立預(yù)覽和制作。模板目錄位于項目目錄下面的Tpl目錄。
獨創(chuàng)機(jī)制
ThinkTemplate是一個使用了XML標(biāo)簽庫技術(shù)的編譯型模板引擎,支持兩種類型的模板標(biāo)簽,使用了動態(tài)編譯和緩存技術(shù),而且支持自定義標(biāo)簽庫。其特點包括:
1)支持XML標(biāo)簽庫和普通標(biāo)簽的混合定義;
2)編譯一次,下次直接運行而無需重新編譯;
3)模板文件更新后,自動更新模板緩存;
4)自動加載當(dāng)前操作的模板緩存文件,無需指定模板文件名稱;
5)支持編碼轉(zhuǎn)換和Content-Type更換;
6)模板變量輸出前綴支持,避免變量名稱沖突;
7)模板常量替換,無需設(shè)置模板變量;
8)支持變量組合調(diào)節(jié)器和格式化功能;
9)支持替換其它模板引擎插件使用;
10)支持獲取模板頁面內(nèi)容。
內(nèi)置XML模板引擎,支持標(biāo)簽庫
富模型支持
1)聚合模型:
聚合模型是一種虛擬模型,用于把數(shù)據(jù)表的字段抽象化,更加容易理解和操作。
我們可以把數(shù)據(jù)表中的某些屬性進(jìn)行數(shù)據(jù)封裝,這樣就把枯燥的數(shù)據(jù)表字段賦予更好的可讀性。
2)靜態(tài)模型:
靜態(tài)模型可以讓模型的數(shù)據(jù)靜態(tài)化,而不需要頻繁和數(shù)據(jù)庫打交道,可以用于不經(jīng)常改變的數(shù)據(jù)表。而且ThinkPHP在NHibernate層上面模擬實現(xiàn)了數(shù)據(jù)庫的視圖功能,這是ThinkPHP獨創(chuàng)的一項技術(shù),使得多表的關(guān)聯(lián)查詢具有更高的效率和可操作性,而無需定義復(fù)雜的關(guān)聯(lián)關(guān)系,讓關(guān)聯(lián)關(guān)系更加淺顯易懂。
有些時候,數(shù)據(jù)表的數(shù)據(jù)一旦添加后就不再容易變化,我們更希望把這樣的模型數(shù)據(jù)靜態(tài)化,而不需要再次訪問數(shù)據(jù)庫。ThinkPHP支持靜態(tài)模型的概念,一旦把模型設(shè)置為靜態(tài),那么會在第一次初始化的時候獲取數(shù)據(jù)表的全部數(shù)據(jù),并生成緩存,以后不會再連接數(shù)據(jù)庫。而只需要直接訪問模型的dataList數(shù)據(jù)即可。
3)視圖模型
ThinkPHP在NHibernate模型里面模擬實現(xiàn)了數(shù)據(jù)庫的視圖模型,該功能可以用于多表查詢。
要定義視圖對象,需要設(shè)置viewModel為true,然后設(shè)置viewFields屬性即可。
CURD和操作高度自動化支持
ThinkPHP提供了靈活和方便的數(shù)據(jù)操作方法,不僅實現(xiàn)了對數(shù)據(jù)庫操作的四大基本操作(CURD):創(chuàng)建、讀取、更新和刪除的實現(xiàn),還內(nèi)置了很多實用的數(shù)據(jù)操作方法,提供了ActiveRecords模式的最佳體驗。
豐富的查詢語言支持
ThinkPHP大多數(shù)情況使用的都是對象查詢,因為充分利用了NHibernate查詢語言,了解查詢條件的定義對使用對象查詢非常有幫助,對于復(fù)雜的查詢,或者從安全方面考慮,可以使用HashMap對象或者索引數(shù)組來傳遞查詢條件。
目錄結(jié)構(gòu)自動創(chuàng)建THINKPHP目錄結(jié)構(gòu)
ThinkPHP具有項目目錄自動創(chuàng)建功能,你只需要定義好項目的入口文件,第一次執(zhí)行入口文件的時候,系統(tǒng)會自動創(chuàng)建項目的相關(guān)目錄結(jié)構(gòu),如果是linux環(huán)境下面需要給項目入口文件里面指定的路徑設(shè)置可寫權(quán)限。
ThinkPHP的模型支持主從式數(shù)據(jù)庫的連接,配置DB_DEPLOY_TYPE為1可以采用分布式數(shù)據(jù)庫支持。
多數(shù)據(jù)庫連接和切換支持
如果需要在特殊的時候連接多個數(shù)據(jù)庫,那么可以嘗試使用ThinkPHP的多數(shù)據(jù)庫連接特性:包括相同類型的數(shù)據(jù)庫和不同類型的數(shù)據(jù)庫。(注意:所謂的相同類型數(shù)據(jù)庫的定義是指和項目配置文件或者模型的數(shù)據(jù)庫連接的數(shù)據(jù)庫類型相同。)
ActiveRecords模式和豐富的ROR特性
ThinkPHP實現(xiàn)了ActiveRecords模式的NHibernate模型,采用了非標(biāo)準(zhǔn)的ORM模型:表映射到類,記錄(集)映射到對象,字段屬性映射到對象的虛擬屬性。最大的特點就是使用方便,從而達(dá)到敏捷開發(fā)的目的。
靈活簡單的項目配置
ThinkPHP提供了靈活的配置功能,采用最有效率的PHP返回數(shù)組方式定義,支持慣例配置、項目配置、調(diào)試配置和模塊配置,并且會自動生成配置緩存文件,無需重復(fù)解析的開銷。對于有些簡單的應(yīng)用,你無需配置任何配置文件,而對于復(fù)雜的要求,你還可以增加模塊配置文件,另外ThinkPHP的動態(tài)配置使得你在開發(fā)過程中可以靈活的調(diào)整配置參數(shù)。
ThinkPHP在項目配置上面創(chuàng)造了自己獨有的分層配置模式,其配置層次體現(xiàn)在:慣例配置-->項目配置-->模塊配置-->操作(動態(tài))配置,優(yōu)先順序從右到左(在沒有生效的前提下)。
模型自動驗證和處理
系統(tǒng)內(nèi)置了數(shù)據(jù)對象的自動驗證功能,而大多數(shù)情況下面,數(shù)據(jù)對象是由表單提交的$_POST數(shù)據(jù)創(chuàng)建。需要使用系統(tǒng)的自動驗證功能,只需要在Model類里面定義$_validate屬性,是由多個驗證因子組成的數(shù)組,支持的驗證因子格式:驗證字段,驗證規(guī)則,錯誤提示,驗證條件,附加規(guī)則,驗證時間。
靜態(tài)頁面生成和多元化緩存機(jī)制
ThinkPHP內(nèi)置了靜態(tài)緩存的功能,并且支持靜態(tài)緩存的規(guī)則定義。要使用靜態(tài)緩存功能,需要開啟HTML_CACHE_ON參數(shù),并且在項目配置目錄下面增加靜態(tài)緩存規(guī)則文件htmlsPHP。
豐富的數(shù)據(jù)庫及PDO支持
SEO和URL路由支持
易擴(kuò)展的系統(tǒng)基類庫
系統(tǒng)基類庫
ThinkPHP框架通過基類庫的概念把所有系統(tǒng)類庫都集成在一起,包括ThinkPHP的核心類庫。
基類庫分成Think核心類庫、ORG擴(kuò)展類庫,在這主要介紹的是核心基類庫,核心基類庫的作用是完成框架的通用性開發(fā)而必須的基礎(chǔ)類和常用工具類等,包含有:
Think.Core 核心類庫包
Think.Db 數(shù)據(jù)庫類庫包
Think.Util 系統(tǒng)工具類庫包
Think.Template 內(nèi)置模板引擎類庫包
Think.Exception 異常處理類庫包函數(shù)庫
ThinkPHP內(nèi)置了一個系統(tǒng)公共函數(shù)庫,提供了一些系統(tǒng)需要的函數(shù),系統(tǒng)函數(shù)庫位于ThinkPHP的Common目錄下面,名稱為函數(shù)sPHP。
每個項目可以定義自己的函數(shù)庫,位于項目的Common目錄下面的common.php文件。
如果項目在Common目錄下面有定義自己的common.php文件,框架會在初始化的時候自動導(dǎo)入,而無需自己導(dǎo)入。
匹配導(dǎo)入
Import方法是ThinkPHP內(nèi)建的類庫和文件導(dǎo)入方法,提供了方便和靈活的類似于命名空間的文件導(dǎo)入機(jī)制。
自動編碼轉(zhuǎn)換
ThinkPHP框架的文件全部采用UTF-8編碼格式,UTF-8的支持和自動輸出編碼轉(zhuǎn)換的功能讓頁面表現(xiàn)更加靈活。您可以配置輸出的頁面編碼格式,如gb2312等(默認(rèn)采用UTF-8輸出)。系統(tǒng)根據(jù)配置文件中設(shè)置的編碼格式自動對頁面進(jìn)行編碼轉(zhuǎn)換,支持iconv和mb_string兩種方式,為了提高效率,如果系統(tǒng)的模板編碼設(shè)置和輸出編碼設(shè)置項相同,則不會進(jìn)行編碼轉(zhuǎn)換。ThinkPHP可以設(shè)置模板編碼、輸出編碼和數(shù)據(jù)庫編碼,并自動完成轉(zhuǎn)換工作,讓你的應(yīng)用不再受編碼的苦惱。
重要的概念
要掌握ThinkPHP,首先要了解其中的幾個重要概念,對于熟悉Java開發(fā)的朋友,應(yīng)該很容易理解下面的一些概念。
Action對象
和Struts框架的Action類似,Action對象主要提供應(yīng)用邏輯的控制和處理,屬于ThinkPHP的控制層,由核心的App類完成模塊和操作的解析后直接轉(zhuǎn)交給相應(yīng)的Action對象處理。應(yīng)用類中的所有Action對象都繼承系統(tǒng)的Action基類。
Dao對象
是指DataAccessObject(數(shù)據(jù)訪問對象),Dao設(shè)計模式把底層的數(shù)據(jù)訪問邏輯和業(yè)務(wù)邏輯分開,夾在業(yè)務(wù)層與數(shù)據(jù)層中間,用于數(shù)據(jù)庫訪問和操作。可以針對單表和多表操作。ThinkPHP中的Dao對象屬于建立在抽象數(shù)據(jù)庫訪問層之上的事務(wù)性對象。
VO對象
是指ValueObject(數(shù)據(jù)對象),更加精確的說是業(yè)務(wù)對象,因為VO對象是存活在業(yè)務(wù)層的,供業(yè)務(wù)邏輯使用的。VO對象和數(shù)據(jù)表存在一種映射關(guān)系,VO對象的每個屬性對應(yīng)數(shù)據(jù)表(或者視圖)的一個字段,你完全可以添加其他非數(shù)據(jù)表字段的VO對象屬性,以用于業(yè)務(wù)邏輯操作,例如關(guān)聯(lián)字段。VO對象有個特殊的保留屬性_info,是一個數(shù)組變量,用來保存該VO對象的一些特殊信息。和VO對象對應(yīng)的概念還有PO(持久數(shù)據(jù)對象),VO和PO的概念都來自于O/RMapping(ObjectRelationalMapping,對象關(guān)系映射),PO只能用在數(shù)據(jù)層(也就是說PO對象的屬性必須和數(shù)據(jù)表一一對應(yīng)),VO用在業(yè)務(wù)邏輯層和表示層(可以有自己的額外屬性)。各層操作屬于該層自己的數(shù)據(jù)對象,這樣就可以降低各層之間的耦合,便于以后系統(tǒng)的維護(hù)和擴(kuò)展。如果將PO用在各個層中就相當(dāng)于我們使用全局變量,我們知道在OO設(shè)計非常不贊成使用全局變量。
VoList對象
在ThinkPHP框架中,把查詢后的數(shù)據(jù)集(ResultSet)轉(zhuǎn)換成數(shù)據(jù)列表對象,也就是VOLIST對象,和ResultSet對象不同的是每個記錄就相當(dāng)于一個VO對象。在VOLIST對象中可以方便地遍歷和操作VO對象。VO對象和VOLIST對象都屬于ThinkPHP框架中的實體對象,是數(shù)據(jù)操作的基本元素。如果你在開發(fā)過程中沒有使用Dao模式,而是通過數(shù)據(jù)庫驅(qū)動類直接操作數(shù)據(jù)庫,那么返回的是ResultSet對象。ThinkPHP系統(tǒng)提供了從ResultSet對象轉(zhuǎn)換為VOLIST對象的方法。
組件和插件支持
基于角色的權(quán)限控制體系
企業(yè)級的應(yīng)用是離不開安全保護(hù)的,ThinkPHP以基于Spring的Acegi安全系統(tǒng)作為參考原型,并做了簡化,以適合目前的ThinkPHP結(jié)構(gòu),提供了一個多層的、可定制的安全體系來為應(yīng)用開發(fā)提供安全控制。安全體系中主要有:安全攔截器、認(rèn)證管理器、決策訪問管理器、運行身份管理器。
分層架構(gòu)
ThinkPHP的分層架構(gòu)采用三層架構(gòu)模式:
表現(xiàn)層
包含模板視圖、用戶界面、JS、Flash等通過模板引擎的支持,可以使用標(biāo)簽定義簡化表現(xiàn)層的定義工作。
業(yè)務(wù)層
包含業(yè)務(wù)接口層、業(yè)務(wù)邏輯層、實體層、數(shù)據(jù)訪問層Action控制器作為業(yè)務(wù)接口層,提供系統(tǒng)各種業(yè)務(wù)操作的入口。因此,不提倡在控制器類中寫過多的業(yè)務(wù)邏輯代碼,雖然說很難嚴(yán)格控制。具體的業(yè)務(wù)邏輯應(yīng)該封裝到數(shù)據(jù)訪問對象(Dao)類中實現(xiàn),如果覺得過于復(fù)雜,還可以把子業(yè)務(wù)在Helper類中包裝后統(tǒng)一調(diào)用。業(yè)務(wù)處理過程一般會構(gòu)造出業(yè)務(wù)實體對象(如Vo對象),對業(yè)務(wù)實體對象的存取通過數(shù)據(jù)訪問層完成。數(shù)據(jù)訪問層把實體對象和數(shù)據(jù)庫數(shù)據(jù)之間建立映射關(guān)系,并且封裝了通用的數(shù)據(jù)操作。
數(shù)據(jù)層
支持的數(shù)據(jù)庫有MySQL、Microsoft SQL Server、PgSql、Oracle數(shù)據(jù)庫、Sqlite,最新版本已經(jīng)提供PDO的支持,數(shù)據(jù)庫的選用和業(yè)務(wù)邏輯沒有關(guān)系。
更新記錄
ThinkPHP 5.0正式版發(fā)布 2016/09/15
主要特性包括:
規(guī)范:遵循PSR-2、PSR-4規(guī)范,Composer及單元測試支持;
嚴(yán)謹(jǐn):異常嚴(yán)謹(jǐn)?shù)腻e誤檢測和安全機(jī)制,詳細(xì)的日志信息,為你的開發(fā)保駕護(hù)航;
靈活:減少核心依賴,擴(kuò)展更靈活、方便,支持命令行指令擴(kuò)展;
API友好:出色的性能和REST支持、遠(yuǎn)程調(diào)試,更好的支持API開發(fā);
NHibernate:重構(gòu)的數(shù)據(jù)庫、模型及關(guān)聯(lián),mongodb支持;
相對于RC4版本,主要更新如下:
請求和路由:
??Request對象支持動態(tài)綁定屬性
??定義了路由規(guī)則的URL原地址禁止訪問
??改進(jìn)路由規(guī)則存儲結(jié)構(gòu)
??路由分組功能增強(qiáng),支持嵌套和虛擬分組
??路由URL高效反解
??改進(jìn)Request對象param方法獲取優(yōu)先級
??路由增加name方法設(shè)置和獲取路由標(biāo)識
??增加MISS和AUTO路由規(guī)則
??Route類增加auto方法 支持注冊一個自動解析URL的路由
??路由規(guī)則支持模型綁定
??路由變量統(tǒng)一使用param方法獲取
??路由規(guī)則標(biāo)識功能和自動標(biāo)識
??增加生成路由緩存指令 optimize:route
??Request對象增加route方法單獨獲取路由變量
??Request對象的param get post put request delete server 曲奇 env方法的第一個參數(shù)傳入false 則表示獲取原始數(shù)據(jù) 不進(jìn)行過濾
??改進(jìn)自動路由標(biāo)識生成 支持不同的路由規(guī)則 指向同一個路由標(biāo)識,改進(jìn)Url自動生成對路由標(biāo)識的支持
??改進(jìn)Request類 filter屬性的初始化
??改進(jìn)Request類的isAjax和isPjax方法
??Request類增加token方法
??路由配置文件支持多個 使用 route_config_file 配置參數(shù)配置
??域名綁定支持https檢測
??改進(jìn)域名綁定 支持同時綁定模塊和其他 支持綁定到數(shù)組定義的路由規(guī)則,取消域名綁定到分組
??路由規(guī)則增加PATCH請求類型支持
??增加route_complete_match配置參數(shù)設(shè)置全局路由規(guī)則定義是否采用完整匹配 可以由路由規(guī)則的參數(shù)complete_match 進(jìn)行覆蓋
??改進(jìn)路由的 后綴參數(shù)識別 優(yōu)先于系統(tǒng)的偽靜態(tài)后綴參數(shù)
??Url類增加root方法用于指定當(dāng)前root地址(不含域名)
??改進(jìn)Url生成對可選參數(shù)的支持
數(shù)據(jù)庫:
??查詢條件自動參數(shù)綁定
??改進(jìn)分頁方法支持參數(shù)綁定
??Query類的cache方法增加緩存標(biāo)簽參數(shù)
??Query類的update和delete方法支持調(diào)用cache方法 會自動清除指定key的緩存 配合查詢方法的cache方法一起使用
??改進(jìn)Query類的延遲寫入方法
??Query類的column和value方法支持fetchsql
??改進(jìn)日期查詢方法
??改進(jìn)存儲過程方法exec的支持
??改進(jìn)Connection類的getLastInsID方法獲取
??記錄數(shù)據(jù)庫的連接日志(連接時間和DSN)
??改進(jìn)Query類的select方法的返回結(jié)果集判斷
??Connection類增加getNumRows方法
??數(shù)據(jù)庫事務(wù)方法取消返回值
??改進(jìn)Query類的chunk方法對主鍵的獲取
??改進(jìn)當(dāng)數(shù)據(jù)庫驅(qū)動類型使用完整命名空間的時候 Query類的builder方法的問題
模型:
??增加軟刪除功能
??關(guān)聯(lián)模型和預(yù)載入改進(jìn)
??關(guān)聯(lián)預(yù)載入查詢閉包支持更多的連貫操作
??完善savell方法支持更新和驗證
??關(guān)聯(lián)定義統(tǒng)一返回Relation類
??Model類的has和hasWhere方法對join類型的支持
??Model類的data方法 批量賦值數(shù)據(jù)的時候 清空原始數(shù)據(jù)
??Model類的get方法第三個參數(shù)傳入true的時候會自動更新緩存
??Model類增加只讀字段支持
??Model類增加useGlobalScope方法設(shè)置是否啟用全局查詢范圍
??Model類的base方法改為靜態(tài)定義 全局多次調(diào)用有效
??Model類支持設(shè)定主鍵、字段信息和字段類型,不依賴自動獲取,提高性能
??Model類的data方法 支持修改器
??改進(jìn)Relation類對非數(shù)字類型主鍵的支持
??改進(jìn)Relation類的一對多刪除
日志和緩存:
??支持日志類型分離存儲
??日志允許設(shè)置記錄級別
??增加緩存標(biāo)簽功能
??緩存類增加pull方法用于獲取并刪除
??cache助手函數(shù)增加tag參數(shù)
??簡化日志信息,隱藏數(shù)據(jù)庫密碼
??增加cache/session redis驅(qū)動的庫選擇邏輯;
??memcached驅(qū)動的配置參數(shù)支持option參數(shù)
??調(diào)試模式下面 日志記錄增加頁面的header和param參數(shù)記錄
??memcached緩存驅(qū)動增加連接賬號密碼參數(shù)
??緩存支持設(shè)置complex類型 支持配置多種緩存并用store切換
??緩存類增加tag方法 用于緩存標(biāo)簽設(shè)置 clear方法支持清除某個緩存標(biāo)簽的數(shù)據(jù)
??File類型日志驅(qū)動支持設(shè)置單獨文件記錄不同的日志級別
??改進(jìn)文件緩存和日志的存儲文件名命名規(guī)范
??緩存類增加inc和dec方法 針對數(shù)值型數(shù)據(jù)提供自增和自減操作
??Cache類增加has方法 get方法支持默認(rèn)值
其他:
??視圖類支持設(shè)置模板引擎參數(shù)
??增加表單令牌生成和驗證
??增加中文驗證規(guī)則
??增加image和文件相關(guān)驗證規(guī)則
??重定向Response對象支持with方法隱含傳參
??改進(jìn)Session類自動初始化
??session類增加pull方法用于獲取并刪除
??增加Env類用于獲取環(huán)境變量
??Request類get/post/put等更改賦值后param方法依然有效
??改進(jìn)Jump跳轉(zhuǎn)地址支持Url::build 解析
??優(yōu)化Hook類
??應(yīng)用調(diào)試模式和頁面trace支持環(huán)境變量設(shè)置
??config助手函數(shù)支持 config('?name') 用法
??支持使用BIND_MODULE常量的方式綁定模塊
??入口文件自動綁定模塊功能
??改進(jìn)驗證異常類的錯誤信息和模板輸出,支持批量驗證的錯誤信息拋出
??完善console 增加output一些常用的方法
??增加token助手函數(shù) 用于在頁面快速顯示令牌
??增加halt方法用于變量調(diào)試并中斷輸出
??改進(jìn)Validate類的number驗證規(guī)則 和 integer區(qū)分開
??optimize:autoload增加對extend擴(kuò)展目錄的掃描
??改進(jìn)Validate類的boolean驗證規(guī)則 支持表單數(shù)據(jù)
??改進(jìn)曲奇助手函數(shù)支持 判斷是否存在某個cookie值
??改進(jìn)abort助手函數(shù) 支持拋出HttpResponseException異常
??改進(jìn)File類增加對上傳錯誤的處理
??改進(jìn)File類move方法的返回對象增加上傳表單信息,增加獲取文件散列值的方法
??改進(jìn)File類的move方法的返回對象改為返回File對象實例
??增加clear和optimize:config 指令
??改進(jìn)File類和Validate類的圖像文件類型驗證
??控制器的操作方法支持注入Request之外的對象實例
??Request類 param(true) 支持獲取帶文件的數(shù)據(jù)
??input助手函數(shù)第一個參數(shù)增加默認(rèn)值
??Validate類增加image驗證規(guī)則 并改進(jìn)max min length支持多種數(shù)據(jù)類型
??json輸出時數(shù)據(jù)編碼失敗后拋出異常
調(diào)整:
??廢除路由映射(靜態(tài)路由)定義
??取消url_deny_suffix配置 改由路由的deny_ext參數(shù)設(shè)置
??模型save方法返回值改為影響的記錄數(shù),取消getId參數(shù)
??Request對象controller方法返回駝峰控制器名
??控制器前置操作方法不存在則拋出異常
??Loader類db方法增加name標(biāo)識參數(shù)
??db助手函數(shù)增加第三個參數(shù)用于指定連接標(biāo)識
??Sqlsrv驅(qū)動默認(rèn)不對數(shù)據(jù)表字段進(jìn)行小寫轉(zhuǎn)換
??移除sae驅(qū)動 改為擴(kuò)展包
??Oracle數(shù)據(jù)庫驅(qū)動移出核心包
??Firebird驅(qū)動移出核心包
??取消別名定義文件alias.php
??配置參數(shù)讀取的時候取消環(huán)境變量判斷 需要讀取環(huán)境變量的時候使用Env類
??環(huán)境變量定義文件更改為 .env 由原來的PHP數(shù)組改為ini格式定義(支持?jǐn)?shù)組方式)
??狀態(tài)配置和擴(kuò)展配置的加載順序調(diào)整 便于狀態(tài)配置文件中可以更改擴(kuò)展配置的參數(shù)
??取消域名綁定到路由分組功能
??控制器類的success和error方法url參數(shù)支持傳入空字符串,則不做任何處理
??控制器的error success result redirect方法均不需要使用return
??創(chuàng)建目錄的權(quán)限修改為0644
TinkPHP 3.2.2發(fā)布 2014/4/15
ThinkPHP3.2.2版本在修正一些BUG后,重寫了模塊的自動生成,并支持控制器和模型的批量生成,增加了配置文件多格式支持,以及一些小的細(xì)節(jié)改進(jìn),該版本屬于小版本更新。
1、應(yīng)用支持包括PHP/JSON/INI/XML/YAML以及自定義格式的配置文件;
2、支持模塊的自動生成和控制器/模型的批量生成;
3、增加插件控制器的訪問支持;
4、cookie函數(shù)增加httponly參數(shù)支持;
5、改進(jìn)模型類的安全處理;
6、修正了3.2.1發(fā)布以來社區(qū)反饋的一些BUG(詳見更新日志);
TinkPHP3.2.1發(fā)布 2014/2/14
相對于3.2.0版本,主要更新如下:
??性能較比3.2.0版本提升30%;
??應(yīng)用模塊中的類庫可以配置不使用命名空間;
??支持運行時Lite文件生成,用于替換應(yīng)用入口文件;
??改進(jìn)路由定義的閉包支持;
??增加API應(yīng)用模式,更加高效;
??增加REST、RPC、HPROSE和YAR控制器擴(kuò)展支持;
??增加REPL行為擴(kuò)展,增強(qiáng)框架開發(fā)的調(diào)試手段;
??重寫查詢緩存功能;
??語言定義支持變量傳入;
??C函數(shù)獲取配置參數(shù)支持默認(rèn)值;
??支持操作方法綁定到類;
??改進(jìn)和修正Image、Verify和Upload類;
??修正了3.2.0發(fā)布以來社區(qū)反饋的一些BUG;
TinkPHP3.2發(fā)布 2013/12/18
這次版本的關(guān)鍵詞是模塊化、驅(qū)動化和云平臺。
模塊化:3.2版本的架構(gòu)專門為模塊化設(shè)計做了優(yōu)化和調(diào)整,從而更適合企業(yè)級應(yīng)用,當(dāng)然這很大一部分得益于對命名空間的支持以及自動加載機(jī)制。同時,你會看到一個小的細(xì)節(jié),ThinkPHP3.2版本自帶了一個應(yīng)用入口文件和應(yīng)用目錄。
驅(qū)動化:3.2版本在設(shè)計類庫的時候盡量采用驅(qū)動式設(shè)計,對于同一功能在不同環(huán)境和類型的操作只需要配置驅(qū)動即可輕松移植,不需要改變現(xiàn)有代碼,同時也讓你的應(yīng)用能夠適用于更多更復(fù)雜的運行環(huán)境。
云平臺:3.2版本在底層核心就包含了對各種云平臺的支持,通過定制不同的應(yīng)用(場景)模式以及對應(yīng)的驅(qū)動就可以輕松支持云平臺的部署開發(fā),你可以實現(xiàn)在本地開發(fā),然后直接無縫部署到云平臺,已經(jīng)支持的包括SAE和BAE3。
功能:
3.2版本在此前的3.1.3版本之上,引入了命名空間,強(qiáng)化了驅(qū)動化和行為,增強(qiáng)了模塊化的概念和對云平臺的支持,并改進(jìn)了諸多的細(xì)節(jié)。
主要改進(jìn)包括:
??模塊化架構(gòu)的全新設(shè)計
??全新命名空間和自動導(dǎo)入機(jī)制
??改進(jìn)的路由功能
??主題的動態(tài)切換支持
??更強(qiáng)大的Action參數(shù)綁定
??模型的參數(shù)綁定支持
??改進(jìn)的域名部署支持
??全新的應(yīng)用模式
??全新重寫的工具類(包括圖像、驗證碼和上傳等)
??提供更好的云平臺支持
??修正之前發(fā)現(xiàn)的眾多BUG
注意:3.2以上版本對PHP的版本要求為PHP5.3+ (不包含PHP5.3dev和PHP6)
TinkPHP3.1.3發(fā)布 2013/05/09
更新
該版本針對3.1.2進(jìn)行了一些改進(jìn)和完善,主要包括:
改進(jìn)異常處理,支持致命錯誤捕獲;
針對PDO驅(qū)動和Sqlsrv驅(qū)動的完善,支持參數(shù)綁定;
增加變量安全獲取和過濾的快捷方法I;
分組支持部署到完整域名或IP;
A和D方法支持跨分組調(diào)用;
改進(jìn)模版引擎的定界符對特殊字符的支持;
修正JS代碼可能對模版標(biāo)簽的混淆;
模型的where方法支持多次調(diào)用;
默認(rèn)關(guān)閉頁面壓縮輸出;
異常日志的紀(jì)錄;
Action類的assign方法支持連貫操作;
數(shù)據(jù)庫錯誤信息包含錯誤代碼;
修正上一版本的一些BUG;
TinkPHP3.1.2發(fā)布 2012/11/17
[更新]
獨立分組功能
模板繼承
模塊和操作映射
AJAX增加jsonp格式支持
分組支持單獨配置默認(rèn)模塊和操作
核心編譯過程的優(yōu)化
SAE引擎升級
改進(jìn)的分頁類
修正查詢語言的一處安全隱患
ThinkPHP 3.1發(fā)布 2012/09/03
[更新]
更加安全的防護(hù)和過濾體系
MVC多層支持
Action參數(shù)綁定支持
模型命名范圍支持
查詢條件和SQL預(yù)處理功能
動態(tài)設(shè)置自動驗證和自動完成支持
更加靈活強(qiáng)大的緩存管理方法
日志記錄簡化、增加IP支持
致命錯誤的捕獲機(jī)制完善
頁面Trace機(jī)制改進(jìn)和分類顯示支持
超過128項更新
ThinkPHP 3.0.1 開發(fā)版
2012-04-05
[更新]
Action參數(shù)綁定支持
模型類命名范圍支持
全局系統(tǒng)變量安全過濾支持
增加IS_GET IS_POST IS_PUT 等請求類型常量
日志記錄改進(jìn) 優(yōu)化日志大小 增加IP記錄
U函數(shù)對子域名部署的增強(qiáng)和優(yōu)化
模型類增加filter連貫操作方法 用于對數(shù)據(jù)的安全過濾
模型類的data方法支持獲取當(dāng)前數(shù)據(jù)對象
Action類增加_param方法支持 可以自動根據(jù)當(dāng)前提交類型 獲取參數(shù)
Action類的_get _post方法支持多函數(shù)過濾
改進(jìn)ajaxReturn方法
改進(jìn)success和error方法
增加自動驗證的規(guī)則
分組模式下模型分組可以自動加載
模型類增加close方法 驅(qū)動類支持多數(shù)據(jù)庫連接關(guān)閉
模型類增加表單提交字段合法性檢測 配置insert_fields 和 update_fields
模型強(qiáng)制進(jìn)行數(shù)據(jù)字段類型驗證
增加DB_SLAVE_NO配置參數(shù) 用于指定讀服務(wù)器的序號
優(yōu)化模型的create方法的數(shù)據(jù)對象生成
自動驗證的function和callback規(guī)則支持多字段
[3.0版本]2012-3-23
[修正]
修正視圖模型擴(kuò)展的checkOrder方法
修正U方法對默認(rèn)分組的完善
修正Redis緩存類
修正sqlsrv驅(qū)動
修正模式擴(kuò)展中的Model類
修正模型的where方法傳人空參數(shù)的時候?qū)е耫elete方法刪除全部數(shù)據(jù)的問題
修正路由定義的大寫被強(qiáng)制轉(zhuǎn)換為小寫的錯誤
修正靜態(tài)緩存讀取行為擴(kuò)展
修正Pgsql驅(qū)動
修正S方法的緩存有效期
修正Mongo驅(qū)動類
[刪除]
取消path_info標(biāo)簽擴(kuò)展位置
取消TAG_NESTED_LEVEL配置參數(shù),該參數(shù)已經(jīng)無效
取消CheckTemplate行為擴(kuò)展 并入核心App類的init方法
[增加]
App類增加action_name 行為標(biāo)簽位置 用于改變操作方法名
增加引擎擴(kuò)展 SAE納入第一個引擎擴(kuò)展
增加ENGINE_PATH常量定義 用于引擎擴(kuò)展使用
增加PATH_INFO的兼容判斷功能
增加URL_PATHINFO_FETCH配置參數(shù)
增加FireShowPageTrace行為擴(kuò)展 能將Trace信息輸出到火狐的firebug
增加Wincache緩存擴(kuò)展驅(qū)動
[完善]
SAE引擎代碼優(yōu)化
優(yōu)化ThinkPHP入口文件
改進(jìn)模塊名的安全檢測 取消異常拋出改成引導(dǎo)到空模塊環(huán)節(jié)
改進(jìn)Widget類的template屬性處理,不區(qū)分大小寫 方便定義
模型的field方法支持 field(true) 用法 表示獲取數(shù)據(jù)表的全部字段 (而不是*)
改進(jìn)對MySQL驅(qū)動的關(guān)鍵字處理方法parseKey
改進(jìn)mongodb驅(qū)動對讀寫分離的支持
改進(jìn)模板引擎的標(biāo)簽別名解析 別名可以無需要定義解析方法
改進(jìn)Db和SQLite緩存驅(qū)動類對有效期參數(shù)的判斷
規(guī)則路由定義支持完整匹配
改進(jìn)模板檢測的自定義模板目錄支持
[調(diào)整]
系統(tǒng)調(diào)試模式配置文件關(guān)閉模板緩存
模板字符串替換定義TMPL_PARSE_STRING區(qū)分大小寫
配置參數(shù)只支持一級不區(qū)分大小寫 二級以下配置參數(shù)區(qū)分大小寫調(diào)用
行為日志記錄類型改為Log::INFO 類型,方便通過配置文件 單獨關(guān)閉相關(guān)行為日志顯示和記錄
checkLang行為擴(kuò)展調(diào)整語言包命名規(guī)范調(diào)整 項目公共語言包 commonPHP 分組語言包 分組名.php 模塊語言包 分組名_模塊名.php 或者 模塊名.php
[2.1版本]2011-4-30
這次的重點更新是在核心應(yīng)用上的改造和效率方面的提升,主要體現(xiàn)在:
URL路由靈活模式,支持常規(guī)路由定義,正則路由匹配
對比2.0版本,新的路由模式更體貼和應(yīng)用更方便,同時在執(zhí)行效率上也得到了更簡潔而有效的處理。最重要的是定義路由將更簡單和直接,并且可選擇使用獨立文件定義或是直接配置定義。
2.1版本對分組模式完善了細(xì)節(jié)流程上的解析機(jī)制,增加了實用的常量定義和模板替換,同時添加了對二級域名的友好支持,對項目部署提供了更多方便
ThinkPHP內(nèi)置模板引擎舍棄了原來XML模式的解析,直接改由類屬性進(jìn)行定義標(biāo)簽,既減少了文件加載,提升了解析效率,在自定義標(biāo)簽和標(biāo)簽擴(kuò)展上,也更加簡單和方便了
?允許項目指定編譯緩存文件定義
?系統(tǒng)函數(shù)庫functions列入核心編譯文件,不再默認(rèn)綁定到核心編譯
以上兩項更新雖微,但實際上意義非凡,對于多項目多應(yīng)用同時部署架構(gòu)時會起到非常重要的作用,核心的自由度更寬更廣了。
改進(jìn)tag函數(shù),插件機(jī)制可以直接定義要執(zhí)行的行為
? 項目初始化提供新的可自定義的部署模式
允許自定義項目首次運行時的訪問處理方式,系統(tǒng)由原來的簡單成功提示,改為探針模式友好提示,對于使用ThinkPHP部署的項目,在初始運行時將方便地提供服務(wù)器相關(guān)信息,對是否支持ThinkPHP運行環(huán)境進(jìn)行探測并報告和提出建議。
?提供AMF模式支持
? 提供PhpRPC模式(感謝vanvvdot提供擴(kuò)展)
? lite模式增強(qiáng),支持使用內(nèi)置模板引擎
? 數(shù)據(jù)插入時允許進(jìn)行更新操作
? 提供了更簡潔的連貫操作方式的數(shù)據(jù)庫切換
? 新增模板常量、變量定義等實用標(biāo)簽
? 其它一些應(yīng)用細(xì)節(jié)處理可對比svn更新記錄
? Images圖像類恢復(fù)圖片水印支持
? Model類恢復(fù)批量插入數(shù)據(jù)的addAll方法
? 優(yōu)化項目核心運行進(jìn)程細(xì)節(jié),去掉不常用功能。
? 優(yōu)化系統(tǒng)進(jìn)程統(tǒng)計處理,提供G函數(shù)可進(jìn)行記錄和統(tǒng)計。
? 完善了多語言在各服務(wù)器環(huán)境下的兼容性統(tǒng)一
? 完善了RelationModel方法兼容問題
? 完善了序列化字段處理
? 完善了數(shù)據(jù)編輯的時候唯一檢測的驗證
? 增加是否記錄異常信息日志開關(guān) LOG_EXCEPTION_RECORD
? 去除了原svn上的二級域名支持
? 去除了原svn上的前后置判斷處理
? 去除了個別不通用功能和配置
? 去除了URL重定向處理,減少HTTP請求的同時,也避免了因此帶來的一些錯誤。
? 對于以上已去除的功能開關(guān)不再生效
[1.0.4 版本] 2008-5-16
修正關(guān)聯(lián)寫入和數(shù)據(jù)字段過濾的沖突
修正哈希子目錄緩存方式
模塊配置文件命名改為:模塊名+_config.PHP
修正Compare標(biāo)簽
修正CX標(biāo)簽庫的判斷標(biāo)簽
修正模板引擎的IF標(biāo)簽的條件BUG
修改多數(shù)據(jù)庫連接和切換機(jī)制,取消addConnect方法的eqType參數(shù),避免了因來回切換的時候的錯誤
修正Db緩存和Sqlite緩存的數(shù)據(jù)過期判斷
增加項目配置檢測,如果項目配置文件發(fā)生修改,則重新生成編譯項目緩存。
增加跳轉(zhuǎn)頁面模板和404模板配置配置方式和Action類的display方法templateFile參數(shù)一致,默認(rèn)配置: 'ACTION_JUMP_TMPL'=> 'Public:success', 'ACTION_404_TMPL'=> 'Public:404'
Action類增加404操作方法頁面跳轉(zhuǎn)操作和404操作支持模板文件配置
修正html標(biāo)簽庫的link和import標(biāo)簽
增加數(shù)據(jù)查詢的IS NULL 和 IS NOT NULL支持
修正連貫操作的一些警告錯誤
完善join分析 支持left right等方式
修正模板引擎在開啟短標(biāo)簽的情況下無法正常輸出XML標(biāo)識的問題
修正ORG.Date.Date類的maxDayOfMonth方法
完善多數(shù)據(jù)庫連接的切換
修改命令行自動創(chuàng)建工具build
修正連貫操作的field方法的判斷錯誤
修正Db類的一處where條件判斷的小問題
南非蘭特_string加上中文隨機(jī)字符串生成
修正兼容方法json_encode對布爾值的判斷
修正ArrayList類的addall方法
修正max min avg sum等查詢方法返回浮點型數(shù)據(jù)錯誤的問題
修正數(shù)組方式查詢的自己使用Like問題
iterate標(biāo)簽增加mod屬性,用于計算循環(huán)變量的取模替換原來的odd屬性
增加Input類,用于輸入數(shù)據(jù)管理
刪除已經(jīng)廢棄的目錄檢查插件
優(yōu)化模板引擎解析,避免多次實例化模板解析類并簡化模板解析類的寫法,去掉架構(gòu)方法定義
修改mobile驗證的正則
增加了分頁類關(guān)于負(fù)數(shù)的判斷
部分CX標(biāo)簽的屬性可以支持特殊模板變量
F方法生成的文件會自動加上THINK_PATH判斷,避免直接執(zhí)行
取消了當(dāng)指定模塊和操作不存在的時候執(zhí)行默認(rèn)模塊和默認(rèn)操作,由用戶自己定義空模塊和空操作來處理。
增加了連貫操作的data方法,用于指定要操作的數(shù)據(jù)
去掉了已經(jīng)廢棄的三個配置參數(shù):DB_CACHE_ON DB_CACHE_時間 DB_CACHE_MAX
增加表單提交的MAGIC_QUOTES_GPC判斷
model類的query和execute方法支持使用__TABLE__字符串系統(tǒng)會自動替換成當(dāng)前模型對應(yīng)的表名
調(diào)整了空操作和直接判斷模板文件的順序空操作優(yōu)先執(zhí)行
修正Cookie類支持關(guān)閉瀏覽器就失效的情況設(shè)置COOKIE_EXPIRE為0或者空字符串或者在使用的時候傳遞參數(shù)0 Cookie::set($name,$value,0);
項目編譯緩存文件也加上是否去掉注釋的開關(guān)
[1.0.3 版本] 2008-3-16
增加空模塊支持 如果指定的模塊不存在會首先定位是否存在Empty模塊
增加核心編譯文件的去除空白和注釋的開關(guān),在入口文件定義 STRIP_RUNTIME_SPACE 常量為false 可以關(guān)閉去除空白和注釋
Action緩存由原來的userCache成員屬性控制改為項目參數(shù) ACTION_CACHE_ON 控制,便于動態(tài)控制
增加數(shù)據(jù)庫字段緩存的開關(guān) 慣例配置增加DB_FIELDS_CACHE 用以設(shè)置數(shù)據(jù)庫字段是否緩存,默認(rèn)進(jìn)行緩存
修正xcache和SQLite緩存方式的讀寫次數(shù)記錄
使用視圖模型的時候,如果主鍵是id,不需要再定義getPk方法
修正多語言和多模板的cookie問題
入口文件免設(shè)置APP_NAME APP_PATH
完善曲奇類
修正模板檢查的時候組件化的支持
模型類的查詢操作支持連貫方法
去掉了一些廢棄的慣例配置參數(shù),包括:DATA_CACHE_ON 和 DATA_CACHE_MAX
慣例配置增加了DATA_CACHE_SUBDIR參數(shù)控制文件緩存方式是否自動使用子目錄哈希緩存
在項目根目錄不存在的情況下自動創(chuàng)建
完善對跨庫查詢的支持
目錄自動創(chuàng)建支持寫入安全文件
[ 1.0.2 ] 2008-2-21
Model類增加toArray方法
修正因Log類的改動導(dǎo)致Trace錯誤信息無法正常顯示的問題
數(shù)據(jù)查詢返回的數(shù)據(jù)集由ArrayObject對象改成數(shù)組
修正Model類的create方法在定義字段映射的下面的bug
修正虛擬模型下面create方法的bug
Model類的facade方法增加數(shù)據(jù)表字段的檢測
優(yōu)化Image類的showAdvVerify方法
修正標(biāo)簽庫的compare標(biāo)簽
Trace配置文件由原來的_trace.php更名為tracePHP
項目調(diào)試配置文件由原來的_debug.php更名為debug.php
項目配置文件由原來的_config.php更名為config.php
路由定義文件由原來的_routes.php 更名為 routes.php
靜態(tài)定義文件由原來的_htmls.php 更名為 htmls.php
Model類的create方法無需type參數(shù),自動判斷新增和編輯模型數(shù)據(jù)
增加第一次運行目錄自動生成功能(只需要定義入口文件)
默認(rèn)項目編譯緩存目錄為Temp目錄
[ 1.0.1 ] 2008-2-2
修正Db類在Oracle數(shù)據(jù)庫下面的parseLimit方法判斷
優(yōu)化數(shù)據(jù)庫驅(qū)動類的查詢結(jié)果獲取
Model 類增加字段的表達(dá)式插入和更新支持
完善了Db類的條件查詢字段中帶有空格的處理
Model類增加了delConnect方法用于刪除動態(tài)增加的數(shù)據(jù)庫連接
增強(qiáng)了分布式數(shù)據(jù)庫的支持 可以設(shè)置是否需要讀寫分離
Model類增加智能切換功能 switchConnect方法可以自動識別是否是相同的數(shù)據(jù)庫連接類型
增加了組件模塊的URL分割定義配置 COMPONENT_DEPR 包括對操作鏈的設(shè)置采用相同的參數(shù)定義
修正Model類的count等統(tǒng)計方法會自動緩存的問題 DB類默認(rèn)關(guān)閉查詢緩存
修正RBAC組件的權(quán)限判斷
修正組件模塊方式下面的模板文件../Public的替換
修正HTML標(biāo)簽庫的list標(biāo)簽的actionlist屬性的支持
修正PDO類在某些數(shù)據(jù)庫下面的getAll方法的BUG
增加核心緩存文件的開關(guān)功能 在入口文件里面設(shè)置 CACHE_RUNTIME 為 false
修正了使用組件模塊的時候模板文件中__URL__的解析問題
修正模板和語言的切換cookie
Model類增加addConnect和switchConnect方法 用于支持多數(shù)據(jù)庫的連接
修正了語言包的緩存導(dǎo)致切換語言無效的問題
Db類增加多數(shù)據(jù)庫連接的內(nèi)置支持
修正Model類在某些數(shù)據(jù)庫下面where條件表達(dá)式不支持where 1 的情況
Db類增加getLastSql方法用于獲取最后一次查詢的SQL
完善Log類的操作以及優(yōu)化錯誤日志的寫入
修正model的數(shù)據(jù)庫連接配置讀取
在ajax返回之前保存日志記錄
完善compare標(biāo)簽
改進(jìn)Vendor函數(shù)的baseUrl參數(shù)定義
改進(jìn)項目語言包的定義 不同語言分成不同子目錄
簡化了query方法的數(shù)據(jù)庫緩存
增加clearCache方法,用于清空項目相關(guān)緩存目錄
增加firebird數(shù)據(jù)庫驅(qū)動支持
修正pgsql驅(qū)動
修正 app.php 文件的編譯緩存路徑的問題
增加編譯緩存路徑的設(shè)置 RUNTIME_PATH
[ 1.0.0 ] 2007-12-25
優(yōu)化了執(zhí)行效率和內(nèi)存開銷
Import方法增加同名檢測和類檢測
完善PHP 5.2.0以下版本的支持
去掉了核心對Config、Language、Cookie和Session類庫的依賴
去掉了Action類內(nèi)置的默認(rèn)操作
改進(jìn)了MySQLi的驅(qū)動類庫
修正了主鍵不是自動增長的時候Model的add方法返回錯誤
修正了mysqli的escape_string方法
修正了PDO的連接params參數(shù)問題
修正了Model的findAll的關(guān)聯(lián)查詢問題
修正了Model類的getModelName方法問題
修正了RBAC的模塊大小寫設(shè)置
去掉volist resultset標(biāo)簽,均作為iterate標(biāo)簽的別名
增加了項目編譯機(jī)制和核心類庫編譯機(jī)制
標(biāo)簽庫定義增加標(biāo)簽的別名定義
XML模版結(jié)束標(biāo)簽增加對空格的支持
增加compare標(biāo)簽和eq neq gt egt lt elt heq 和nheq標(biāo)簽別名
增加了多模版和多語言的開關(guān)
RBAC認(rèn)證增加了操作的認(rèn)證設(shè)置,之前只支持模塊的認(rèn)證設(shè)置
相關(guān)開源項目
1.thinksns
ThinkSNS 基于許多優(yōu)秀的開源軟件開發(fā),提供全方位的社交網(wǎng)絡(luò)(SNS)解決方案。ThinkSNS源于辦公圈項目,WEB端基于國內(nèi)技術(shù)領(lǐng)先的ThinkPHP框架開發(fā),另外還有IM客戶端軟件。ThinkSNS全部基于開源項目,同時也作為開源項目,免費提供給用戶使用。項目框架都有完善的文檔和實例,非常適合二次開發(fā)。能為致力于SNS方向的站長提供幫助,是我們的最大的夢想!
2.OneThink
OT是ThinkPHP官方發(fā)布的內(nèi)容管理框架;OneThink以其便捷的建站、豐富的擴(kuò)展、靈活的二次開發(fā),以及云服務(wù)的支持,為廣大個人和企業(yè)建站帶來新的契機(jī)和機(jī)遇,即將成為互聯(lián)網(wǎng)新的弄潮兒。
3.ThinkCMF
ThinkCMF是由第三方團(tuán)隊開發(fā)的中文內(nèi)容管理框架;ThinkCMF是一款基于PHP+MySQL開發(fā)的中文內(nèi)容管理框架。ThinkCMF提出靈活的應(yīng)用機(jī)制,框架自身提供基礎(chǔ)的管理功能,而開發(fā)者可以根據(jù)自身的需求以應(yīng)用的形式進(jìn)行擴(kuò)展。每個應(yīng)用都能獨立的完成自己的任務(wù),也可通過系統(tǒng)調(diào)用其他應(yīng)用進(jìn)行協(xié)同工作。在這種運行機(jī)制下,開發(fā)商場應(yīng)用的用戶無需關(guān)心開發(fā)SNS應(yīng)用時如何工作的,但他們之間又可通過系統(tǒng)本身進(jìn)行協(xié)調(diào),大大的降低了開發(fā)成本和溝通成本。普通的CMS(內(nèi)容管理系統(tǒng))一般不能完成所有的需求,而因為CMS在ThinkCMF內(nèi)部只是已一個應(yīng)用的形式存在,所以使用ThinkCMF你可以用CMS來管理你的內(nèi)容,用電影網(wǎng)站系統(tǒng)來管理視頻,用電商系統(tǒng)來管理電商網(wǎng)站。這些程序不會影響,你可以模塊化的增加或減少應(yīng)用。
4.tpflow
tpflow基于thikphp 5.1 開發(fā)的符合快速設(shè)計理念的工作流組件。
在線手冊目錄
1簡介
ThinkPHP是一個免費開源的,快速、簡單的面向?qū)ο蟮妮p量級PHP開發(fā)框架,引入了全新的CBD(核心+行為+驅(qū)動)架構(gòu)模式,同時支持SAE、REST和Mongo
2入門基礎(chǔ)
2.1基礎(chǔ)概念
2.2獲取ThinkPHP
2.3關(guān)于版本
2.4環(huán)境要求
2.5許可協(xié)議
3架構(gòu)設(shè)計
3.1系統(tǒng)特性
3.2目錄結(jié)構(gòu)
3.3MVC分層
3.4執(zhí)行流程
3.5命名規(guī)范
3.6入口文件
3.7項目編譯
3.8URL訪問
3.9控制器
3.10模型
3.11數(shù)據(jù)庫抽象層
3.12視圖
3.13模板引擎
3.14函數(shù)庫
3.15類庫
3.16擴(kuò)展
4構(gòu)建應(yīng)用
4.1開發(fā)流程
4.2入口文件
4.3自動生成
4.4項目配置
4.5業(yè)務(wù)邏輯
4.6模板定義
4.7運行應(yīng)用
5開發(fā)指南
5.1配置
5.2控制器
5.3模型
5.4視圖
5.5錯誤和日志
5.6調(diào)試
5.7緩存
5.8安全
5.9部署
5.10雜項
6擴(kuò)展指南
6.1類庫擴(kuò)展
6.2應(yīng)用擴(kuò)展
6.3控制器擴(kuò)展
6.4模型擴(kuò)展
6.5驅(qū)動擴(kuò)展
6.6Widget擴(kuò)展
6.7行為擴(kuò)展
6.8標(biāo)簽庫擴(kuò)展
6.9模板引擎擴(kuò)展
6.10模式擴(kuò)展
7模板指南
7.1變量輸出
7.2使用函數(shù)
7.3系統(tǒng)變量
7.4快捷輸出
7.5默認(rèn)值輸出
7.6包含文件
7.7導(dǎo)入文件
7.8Volist標(biāo)簽
7.9Foreach標(biāo)簽
7.10Switch標(biāo)簽
7.11比較標(biāo)簽
7.12Range標(biāo)簽
7.13Present標(biāo)簽
7.14Empty標(biāo)簽
7.15Defined標(biāo)簽
7.16IF標(biāo)簽
7.17標(biāo)簽嵌套
7.18使用PHP代碼
7.19原樣輸出
7.20模板注釋
7.21引入標(biāo)簽庫
7.22修改定界符
8附錄
8.1常量參考
8.2配置參考
8.3函數(shù)參考
8.4類庫參考
8.5關(guān)于升級
8.6代碼重構(gòu)
8.7開源應(yīng)用
8.8典型案例
8.9大事記
8.10鳴謝
所獲榮譽(yù)
2012年度最受歡迎中國開源軟件第二名
參考資料 >
ThinkPHP3.2.2完整版.ThinkPHP官網(wǎng).2014-11-02
ThinkPHP5.0.5完整版.ThinkPHP官網(wǎng).2017-03-14
ThinkPHP5.1.0RC1核心版.Thinkphp.2018-06-18
ThinkPHP6.0RC2版本發(fā)布——架構(gòu)升級、精簡核心.ThinkPHP框架.2019-04-22
ThinkPHP5.0正式版發(fā)布.Thinkphp官網(wǎng).2017-04-14
ThinkPHP3.1.2版本發(fā)布.ThinkPHP.2012-12-24
2012年度最受歡迎中國開源軟件結(jié)果.thinkphp官網(wǎng).2013-01-01