折疊 編輯本段 基本特性1.簡(jiǎn)單易用的MVC模式THINKPHP 模型(M):模型的定義由Model類(lèi)來(lái)完成。Model類(lèi)位于項(xiàng)目目錄下面的LibModel目錄。 控制器(C):應(yīng)用控制器(核心控制器)和Action控制器都承擔(dān)了控制器的角色,區(qū)別在于Action控制器完成業(yè)務(wù)過(guò)程,而應(yīng)用控制器(App類(lèi))負(fù)責(zé)調(diào)度控制。Action控制器位于項(xiàng)目目錄下面的LibAction目錄。 視圖(V):模板的實(shí)現(xiàn)是和框架無(wú)關(guān)的,做到了100%分離,可以獨(dú)立預(yù)覽和制作。模板目錄位于項(xiàng)目目錄下面的Tpl目錄。 2.獨(dú)創(chuàng)的核心編譯和項(xiàng)目編譯機(jī)制 ThinkTemplate是一個(gè)使用了XML標(biāo)簽庫(kù)技術(shù)的編譯型模板引擎,支持兩種類(lèi)型的模板標(biāo)簽,使用了動(dòng)態(tài)編譯和緩存技術(shù),而且支持自定義標(biāo)簽庫(kù)。其特點(diǎn)包括: 1)支持XML標(biāo)簽庫(kù)和普通標(biāo)簽的混合定義; 2)編譯一次,下次直接運(yùn)行而無(wú)需重新編譯; 3)模板文件更新后,自動(dòng)更新模板緩存; 4)自動(dòng)加載當(dāng)前操作的模板緩存文件,無(wú)需指定模板文件名稱(chēng); 5)支持編碼轉(zhuǎn)換和Content-Type 更換; 6)模板變量輸出前綴支持,避免變量名稱(chēng)沖突; 7)模板常量替換,無(wú)需設(shè)置模板變量; 8)支持變量組合調(diào)節(jié)器和格式化功能; 9)支持替換其它模板引擎插件使用; 10)支持獲取模板頁(yè)面內(nèi)容 3.內(nèi)置XML模板引擎,支持標(biāo)簽庫(kù) 4.富模型支持 1)聚合模型: 聚合模型是一種虛擬模型,用于把數(shù)據(jù)表的字段抽象話(huà),更加容易理解和操作。 我們可以把數(shù)據(jù)表中的某些屬性進(jìn)行數(shù)據(jù)封裝,這樣就把枯燥的數(shù)據(jù)表字段賦予更好的可讀性。 2)靜態(tài)模型: 靜態(tài)模型可以讓模型的數(shù)據(jù)靜態(tài)化,而不需要頻繁和數(shù)據(jù)庫(kù)打交道,可以用于不經(jīng)常不變的數(shù)據(jù)表。而且ThinkPHP在ORM層上面模擬實(shí)現(xiàn)了數(shù)據(jù)庫(kù)的視圖功能,這是ThinkPHP獨(dú)創(chuàng)的一項(xiàng)技術(shù),使得多表的關(guān)聯(lián)查詢(xún)具有更高的效率和可操作性,而無(wú)需定義復(fù)雜的關(guān)聯(lián)關(guān)系,讓關(guān)聯(lián)關(guān)系更加淺顯易懂。 有些時(shí)候,數(shù)據(jù)表的數(shù)據(jù)一旦添加后就不再容易變化,我們更希望把這樣的模型數(shù)據(jù)靜態(tài)化,而不需要再次訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)。ThinkPHP支持靜態(tài)模型的概念,一旦把模型設(shè)置為靜態(tài),那么會(huì)在第一次初始化的時(shí)候獲取數(shù)據(jù)表的全部數(shù)據(jù),并生成緩存,以后不會(huì)再連接數(shù)據(jù)庫(kù)。而只需要直接訪(fǎng)問(wèn)模型的dataList數(shù)據(jù)即可。 3)視圖模型 ThinkPHP在ORM模型里面模擬實(shí)現(xiàn)了數(shù)據(jù)庫(kù)的視圖模型,該功能可以用于多表查詢(xún)。 要定義視圖對(duì)象,需要設(shè)置viewModel為true,然后設(shè)置viewFields屬性即可。 5.CURD和操作高度自動(dòng)化支持 ThinkPHP提供了靈活和方便的數(shù)據(jù)操作方法,不僅實(shí)現(xiàn)了對(duì)數(shù)據(jù)庫(kù)操作的四大基本操作(CURD):創(chuàng)建、讀取、更新和刪除的實(shí)現(xiàn),還內(nèi)置了很多實(shí)用的數(shù)據(jù)操作方法,提供了ActiveRecords模式的最佳體驗(yàn)。 6.豐富的查詢(xún)語(yǔ)言支持 ThinkPHP大多數(shù)情況使用的都是對(duì)象查詢(xún),因?yàn)槌浞掷昧薕RM查詢(xún)語(yǔ)言,了解查詢(xún)條件的定義對(duì)使用對(duì)象查詢(xún)非常有幫助,對(duì)于復(fù)雜的查詢(xún),或者從安全方面考慮,可以使用HashMap對(duì)象或者索引數(shù)組來(lái)傳遞查詢(xún)條件。 7.目錄結(jié)構(gòu)自動(dòng)創(chuàng)建THINKPHP ThinkPHP具有項(xiàng)目目錄自動(dòng)創(chuàng)建功能,你只需要定義好項(xiàng)目的入口文件,第一次執(zhí)行入口文件的時(shí)候,系統(tǒng)會(huì)自動(dòng)創(chuàng)建項(xiàng)目的相關(guān)目錄結(jié)構(gòu),如果是linux環(huán)境下面需要給項(xiàng)目入口文件里面指定的路徑設(shè)置可寫(xiě)權(quán)限。 8.分布式數(shù)據(jù)庫(kù)支持 ThinkPHP的模型支持主從式數(shù)據(jù)庫(kù)的連接,配置DB_DEPLOY_TYPE 為1 可以采用分布式數(shù)據(jù)庫(kù)支持。 9.多數(shù)據(jù)庫(kù)連接和切換支持 如果需要在特殊的時(shí)候連接多個(gè)數(shù)據(jù)庫(kù),那么可以嘗試使用ThinkPHP的多數(shù)據(jù)庫(kù)連接特性:包括相同類(lèi)型的數(shù)據(jù)庫(kù)和不同類(lèi)型的數(shù)據(jù)庫(kù)。(注意:所謂的相同類(lèi)型數(shù)據(jù)庫(kù)的定義是指和項(xiàng)目配置文件或者模型的數(shù)據(jù)庫(kù)連接的數(shù)據(jù)庫(kù)類(lèi)型相同。) 10.ActiveRecords模式和豐富的ROR特性 ThinkPHP實(shí)現(xiàn)了ActiveRecords模式的ORM模型,采用了非標(biāo)準(zhǔn)的ORM模型:表映射到類(lèi),記錄(集)映射到對(duì)象,字段屬性映射到對(duì)象的虛擬屬性。最大的特點(diǎn)就是使用方便,從而達(dá)到敏捷開(kāi)發(fā)的目的。 11.靈活簡(jiǎn)單的項(xiàng)目配置 ThinkPHP提供了靈活的配置功能,采用最有效率的PHP返回?cái)?shù)組方式定義,支持慣例配置、項(xiàng)目配置、調(diào)試配置和模塊配置,并且會(huì)自動(dòng)生成配置緩存文件,無(wú)需重復(fù)解析的開(kāi)銷(xiāo)。對(duì)于有些簡(jiǎn)單的應(yīng)用,你無(wú)需配置任何配置文件,而對(duì)于復(fù)雜的要求,你還可以增加模塊配置文件,另外ThinkPHP的動(dòng)態(tài)配置使得你在開(kāi)發(fā)過(guò)程中可以靈活的調(diào)整配置參數(shù)。 ThinkPHP在項(xiàng)目配置上面創(chuàng)造了自己獨(dú)有的分層配置模式,其配置層次體現(xiàn)在:慣例配置--> 項(xiàng)目配置--> 模塊配置--> 操作(動(dòng)態(tài))配置,優(yōu)先順序從右到左(在沒(méi)有生效的前提下)。 12.模型自動(dòng)驗(yàn)證和處理 系統(tǒng)內(nèi)置了數(shù)據(jù)對(duì)象的自動(dòng)驗(yàn)證功能,而大多數(shù)情況下面,數(shù)據(jù)對(duì)象是由表單提交的$_POST數(shù)據(jù)創(chuàng)建。需要使用系統(tǒng)的自動(dòng)驗(yàn)證功能,只需要在Model類(lèi)里面定義$_validate屬性,是由多個(gè)驗(yàn)證因子組成的數(shù)組,支持的驗(yàn)證因子格式:驗(yàn)證字段,驗(yàn)證規(guī)則,錯(cuò)誤提示,驗(yàn)證條件,附加規(guī)則,驗(yàn)證時(shí)間。 13.靜態(tài)頁(yè)面生成和多元化緩存機(jī)制 ThinkPHP內(nèi)置了靜態(tài)緩存的功能,并且支持靜態(tài)緩存的規(guī)則定義。要使用靜態(tài)緩存功能,需要開(kāi)啟HTML_CACHE_ON 參數(shù),并且在項(xiàng)目配置目錄下面增加靜態(tài)緩存規(guī)則文件 htmls.php。 14.豐富的數(shù)據(jù)庫(kù)及PDO支持 15.SEO和URL路由支持 16.AJAX支持 17.易擴(kuò)展的系統(tǒng)基類(lèi)庫(kù) 系統(tǒng)基類(lèi)庫(kù) ThinkPHP框架通過(guò)基類(lèi)庫(kù)的概念把所有系統(tǒng)類(lèi)庫(kù)都集成在一起,包括ThinkPHP的核心類(lèi)庫(kù)。 目前的基類(lèi)庫(kù)分成Think核心類(lèi)庫(kù)、ORG 擴(kuò)展類(lèi)庫(kù),在這主要介紹的是核心基類(lèi)庫(kù),核心基類(lèi)庫(kù)的作用是完成框架的通用性開(kāi)發(fā)而必須的基礎(chǔ)類(lèi)和常用工具類(lèi)等,包含有: Think.Core 核心類(lèi)庫(kù)包 Think.Db 數(shù)據(jù)庫(kù)類(lèi)庫(kù)包 Think.Util 系統(tǒng)工具類(lèi)庫(kù)包 Think.Template 內(nèi)置模板引擎類(lèi)庫(kù)包 Think.Exception 異常處理類(lèi)庫(kù)包 函數(shù)庫(kù) ThinkPHP內(nèi)置了一個(gè)系統(tǒng)公共函數(shù)庫(kù),提供了一些系統(tǒng)需要的函數(shù),系統(tǒng)函數(shù)庫(kù)位于ThinkPHP的Common目錄下面,名稱(chēng)為functions.php。 每個(gè)項(xiàng)目可以定義自己的函數(shù)庫(kù),位于項(xiàng)目的Common目錄下面的common.php文件。 如果項(xiàng)目在Common目錄下面有定義自己的common.php文件,框架會(huì)在初始化的時(shí)候自動(dòng)導(dǎo)入,而無(wú)需自己導(dǎo)入。 匹配導(dǎo)入 Import方法是ThinkPHP內(nèi)建的類(lèi)庫(kù)和文件導(dǎo)入方法,提供了方便和靈活的類(lèi)似于命名空間的文件導(dǎo)入機(jī)制。 18.自動(dòng)編碼轉(zhuǎn)換 ThinkPHP框架的文件全部采用UTF-8編碼格式,UTF-8的支持和自動(dòng)輸出編碼轉(zhuǎn)換的功能讓頁(yè)面表現(xiàn)更加靈活。您可以配置輸出的頁(yè)面編碼格式,如gb2312等(默認(rèn)采用UTF-8輸出)。系統(tǒng)根據(jù)配置文件中設(shè)置的編碼格式自動(dòng)對(duì)頁(yè)面進(jìn)行編碼轉(zhuǎn)換,支持iconv和mb_string兩種方式,為了提高效率,如果系統(tǒng)的模板編碼設(shè)置和輸出編碼設(shè)置項(xiàng)相同,則不會(huì)進(jìn)行編碼轉(zhuǎn)換。ThinkPHP可以設(shè)置模板編碼、輸出編碼和數(shù)據(jù)庫(kù)編碼,并自動(dòng)完成轉(zhuǎn)換工作,讓你的應(yīng)用不再受編碼的苦惱。 19.組件和插件支持 20.基于角色的權(quán)限控制體系 企業(yè)級(jí)的應(yīng)用是離不開(kāi)安全保護(hù)的,ThinkPHP以基于Spring的Acegi安全系統(tǒng)作為參考原型,并做了簡(jiǎn)化,以適合目前的ThinkPHP結(jié)構(gòu),提供了一個(gè)多層的、可定制的安全體系來(lái)為應(yīng)用開(kāi)發(fā)提供安全控制。安全體系中主要有: 安全攔截器、認(rèn)證管理器、決策訪(fǎng)問(wèn)管理器 、運(yùn)行身份管理器。 21.詳盡的開(kāi)發(fā)指南和全中文注釋 折疊 編輯本段 更新記錄折疊 編輯本段 [5.0RC1版本]2015-12-11[ 底層架構(gòu) ] 真正的惰性加載 核心類(lèi)庫(kù)組件化 完美路由設(shè)計(jì) 框架引導(dǎo)文件 采用Traits擴(kuò)展 API友好 文件命名規(guī)范調(diào)整 Composer自動(dòng)加載支持 Console模式 [ 路由 ] 動(dòng)態(tài)注冊(cè)路由規(guī)則 支持路由到任意類(lèi)的方法 域名綁定 資源路由支持 自定義路由檢測(cè)方法 路由前后置行為 路由分組 變量規(guī)則(包括全局和局部) 閉包支持 URL生成支持路由解析反轉(zhuǎn) 支持路由到多層控制器 [ 調(diào)試和異常 ] 專(zhuān)為API開(kāi)發(fā)而設(shè)計(jì)的輸出、調(diào)試和異常處理 SocketLog整合實(shí)現(xiàn)遠(yuǎn)程瀏覽器插件調(diào)試 內(nèi)置trace方法直接遠(yuǎn)程調(diào)試 數(shù)據(jù)庫(kù)SQL性能分析支持 [ 控制器 ] 控制器類(lèi)無(wú)需繼承controller類(lèi) 靈活的多層控制器支持 可以Traits引入高級(jí)控制器功能 控制器rest/yar/rpc/hprose/jsonrpc擴(kuò)展 前置操作方法支持排除和指定操作 控制器操作方法統(tǒng)一return設(shè)計(jì) [ 模型 ] 簡(jiǎn)化的核心模型 Traits引入高級(jí)模型/視圖模型/關(guān)聯(lián)模型 主從分布時(shí)候主數(shù)據(jù)庫(kù)讀操作支持 改進(jìn)的join方法和order方法 [ 視圖 ] 視圖解析驅(qū)動(dòng)設(shè)計(jì)(模板引擎) 所有方法不再直接輸出而是返回交由系統(tǒng)統(tǒng)一輸出處理 動(dòng)態(tài)切換模板主題 動(dòng)態(tài)切換模板引擎 [ 數(shù)據(jù)庫(kù) ] 完全基于PDO實(shí)現(xiàn) 簡(jiǎn)化的數(shù)據(jù)庫(kù)驅(qū)動(dòng)設(shè)計(jì) SQL性能監(jiān)控(需要開(kāi)啟數(shù)據(jù)庫(kù)調(diào)試模式) [ 其他方面 ] 目錄和MVC文件自動(dòng)生成支持 I函數(shù)默認(rèn)添加變量修飾符為/s 一個(gè)行為類(lèi)里面支持為多個(gè)標(biāo)簽位定義不同的方法 [3.2.3 版本] 2014-12-24[1] [ 數(shù)據(jù)庫(kù)方面 ] 數(shù)據(jù)庫(kù)驅(qū)動(dòng)完全用PDO重寫(xiě); [ 模型方面 ] 模型類(lèi)的諸多增強(qiáng)和改進(jìn); [ 安全方面 ] I函數(shù)增加變量修飾符和正則檢測(cè)支持; [ 其它方面 ] 支持全局路由定義; [新增] [新增] 增加index連貫操作方法,用于數(shù)據(jù)集的強(qiáng)制索引操作 [新增] Model類(lèi)增加using連貫操作用于多表操作 [新增] 增加strict連貫操作,用于設(shè)置數(shù)據(jù)寫(xiě)入和查詢(xún)是否嚴(yán)格檢查是否存在字段 默認(rèn)情況下 不合法數(shù)據(jù)字段自動(dòng)刪除,如果設(shè)置了嚴(yán)格檢查則會(huì)拋出異常。 例如: $model->strict(true)->add($data); [新增] 增加fetchSql連貫操作 [新增] 添加yaml_parse_file()函數(shù),解析yaml文件返回一個(gè)數(shù)組 [新增] 增加memcache Session驅(qū)動(dòng) [新增] 增加聚合模型,方便一對(duì)一的關(guān)聯(lián)數(shù)據(jù)表操作 [新增] 新增TMPL_PATH常量支持 可以全局改版模板目錄到模塊目錄之外 [新增] 增加Lite模式Db類(lèi),僅支持原生SQL操作 [新增] 數(shù)據(jù)庫(kù)調(diào)試增加單獨(dú)的配置參數(shù) DB_DEBUG(如未設(shè)置依然取調(diào)試模式常量 APP_DEBUG) [新增] 新增框架核心葡萄牙語(yǔ)言包 [新增] 增加COOKIE_SECURE和COOKIE_HTTPONLY配置參數(shù) [新增] MySQL驅(qū)動(dòng)增加ON DUPLICATE KEY UPDATE功能 [改進(jìn)] [改進(jìn)] Db類(lèi)和數(shù)據(jù)庫(kù)驅(qū)動(dòng)類(lèi)完全基于PDO重寫(xiě) [改進(jìn)] 添加全局過(guò)濾機(jī)制(默認(rèn)關(guān)閉) [改進(jìn)] I函數(shù)增加修飾符功能和正則檢測(cè)支持 [改進(jìn)] 采用主從分布式數(shù)據(jù)庫(kù)時(shí),從數(shù)據(jù)庫(kù)連接失敗自動(dòng)連接主服務(wù)器 [改進(jìn)] 增加Model類(lèi)對(duì)復(fù)合主鍵的支持 [改進(jìn)] 改進(jìn)Mongo模型和驅(qū)動(dòng)類(lèi),使用更加方便 [改進(jìn)] 改進(jìn)session函數(shù)刪除操作支持?jǐn)?shù)組 [改進(jìn)] 改進(jìn)session函數(shù)對(duì)多維賦值的支持 [改進(jìn)] 改進(jìn)數(shù)據(jù)庫(kù)字段緩存的文件標(biāo)識(shí) 加上數(shù)據(jù)表前綴,避免不同前綴的表產(chǎn)生混淆 [改進(jìn)] 針對(duì)數(shù)據(jù)庫(kù)視圖無(wú)主鍵的問(wèn)題,使用默認(rèn)id作為主鍵,與未開(kāi)啟DB_FIELDS_CACHE時(shí)行為一致 [改進(jìn)] SAE模式慣例配置增加上傳驅(qū)動(dòng)設(shè)置 [改進(jìn)] 改進(jìn)參數(shù)綁定機(jī)制 [改進(jìn)] 確保使用參數(shù)綁定后日志中生成sql語(yǔ)句的準(zhǔn)確性 [改進(jìn)] 模型類(lèi)的setInc和setDec方法支持延遲寫(xiě)入,同時(shí)取消高級(jí)模型的相關(guān)方法 [改進(jìn)] 日志寫(xiě)入的時(shí)候自動(dòng)創(chuàng)建目錄 [改進(jìn)] 改進(jìn)SQL緩存 [改進(jìn)] 優(yōu)化緩存隊(duì)列功能 [改進(jìn)] 路由的請(qǐng)求類(lèi)型定義不區(qū)分大小寫(xiě) [改進(jìn)] 數(shù)據(jù)庫(kù)驅(qū)動(dòng)增加通用insertAll方法支持 [改進(jìn)] 完善 url的驗(yàn)證正則 [改進(jìn)] 單字母函數(shù)返回值類(lèi)型修正以及一些拼寫(xiě)錯(cuò)誤修正 [改進(jìn)] 自動(dòng)創(chuàng)建模型模塊的父目錄 直接調(diào)用\Think\Build::buildController和buildModel的情況下創(chuàng)建目錄 [改進(jìn)] 日志驅(qū)動(dòng)增加自動(dòng)目錄創(chuàng)建支持 [改進(jìn)] 自動(dòng)生成的目錄結(jié)構(gòu)增加模塊的緩存目錄 [改進(jìn)] mysql存儲(chǔ)過(guò)程支持完善 [改進(jìn)] Db類(lèi)改進(jìn)對(duì)多表更新和刪除的支持,多表刪除支持USING和JOIN操作 [改進(jìn)] 改進(jìn)parseLock的位置 [改進(jìn)] Db類(lèi)的update和delete方法增加多表操作的支持 [改進(jìn)] 改進(jìn)CURD操作 可以直接返回sql語(yǔ)句而不真正執(zhí)行。 [改進(jìn)] 插件控制器的命名空間可定義 不再局限于模塊下面 增加 ADDON_PATH 用于定義插件目錄 默認(rèn)位于 應(yīng)用目錄下面的Addon [改進(jìn)] 改進(jìn)靜態(tài)緩存讀取的有效判斷對(duì)sae的支持 [改進(jìn)] 日志目錄分模塊 [改進(jìn)] 模型類(lèi)的getField方法改進(jìn) 支持在字段名中使用函數(shù) [改進(jìn)] 改進(jìn)Db類(lèi)的parseWhere方法 [改進(jìn)] 改進(jìn)模型的page和limit方法 改進(jìn)分頁(yè)類(lèi) [改進(jìn)] 改進(jìn)配置文件自動(dòng)生成 [改進(jìn)] 完善ShowPageTraceBehavior一處函數(shù)調(diào)用大小寫(xiě)規(guī)范 [改進(jìn)] U函數(shù)支持多級(jí)控制器 [改進(jìn)] send_http_status函數(shù)增加狀態(tài) [改進(jìn)] 允許在項(xiàng)目中定義 __APP__ 常量 [改進(jìn)] 改進(jìn)定義TMPL_PATH后的模板路徑定義 [改進(jìn)] Image類(lèi)的imagick驅(qū)動(dòng)save方法增加quality參數(shù) 用于圖片質(zhì)量設(shè)置,默認(rèn)值為80 [改進(jìn)] 改進(jìn)Image類(lèi)的JPEG圖片生成質(zhì)量 [改進(jìn)] Gd庫(kù)驅(qū)動(dòng)類(lèi)改進(jìn) [改進(jìn)] 改進(jìn)T函數(shù)對(duì)TMPL_PATH常量定義的支持 [改進(jìn)] 改進(jìn)I函數(shù)對(duì)path.0的支持 [改進(jìn)] 改進(jìn)關(guān)聯(lián)模型 [改進(jìn)] 改進(jìn)dispatch_jump模板 [改進(jìn)] 更新api模式支持配置文件的后綴定義 [改進(jìn)] 改進(jìn)Model類(lèi)的getModelName方法對(duì)多層模型的支持 [改進(jìn)] 改進(jìn)cookie函數(shù)對(duì)secure和httponly的支持 [改進(jìn)] 改進(jìn)模板標(biāo)簽對(duì)命名空間的支持,寫(xiě)法 {$var|Org\\Util\\String::rand} [改進(jìn)] 改進(jìn)數(shù)據(jù)表自動(dòng)識(shí)別規(guī)則正則規(guī)則 可以正確識(shí)別帶有數(shù)字的數(shù)據(jù)表 [改進(jìn)] Model類(lèi)的cache方法使用改進(jìn) cache(10) 等同于 cache(true, 10) [修正] [修正] 修正ShowRuntime行為擴(kuò)展 [修正] 修正Model類(lèi)的add和addall方法中的_facade和_parseOptions的調(diào)用順序問(wèn)題 [修正] 修正使用數(shù)組方式動(dòng)態(tài)指定表名后的BUG [修正] 修正ChromShowPage行為擴(kuò)展 [修正] 修正自定義公共模塊路徑時(shí),加載公共模塊類(lèi)庫(kù)失敗 [修正] 修正參數(shù)綁定的一處判斷 [修正] 解決PDO參數(shù)綁定后的獲取最終SQL語(yǔ)句問(wèn)題 [修正] 修正開(kāi)啟布局后show方法的問(wèn)題 [修正] 解決調(diào)用trace()無(wú)法返回trace日志問(wèn)題 [修正] 修復(fù)mongo出現(xiàn)錯(cuò)誤輸出的問(wèn)題 [修正] 修正頁(yè)面Trace的日志保存 [修正] 修正Model類(lèi)的save方法 [修正] 修正令牌驗(yàn)證沒(méi)有設(shè)置TOKEN_NAME的問(wèn)題 [修正] 修復(fù)RestController中請(qǐng)求資源類(lèi)型總是為html的bug [修正] 修正Model類(lèi)的getField方法的一處變量沖突問(wèn)題 [修正] 修正Mongo驅(qū)動(dòng)的page處理 [修正] 修正 extract方法 在分解變量的時(shí)候 可能導(dǎo)致變量被覆蓋的問(wèn)題 [修正] 修正Imagick類(lèi)庫(kù) [修正] 修正頁(yè)面trace插件開(kāi)啟PAGE_TRACE_SAVE后出錯(cuò)的問(wèn)題 [修正] 修正controller方法 對(duì)不使用命名空間的支持 [修正] 修正Image類(lèi)的save方法支持圖片質(zhì)量 [修正] 修正高級(jí)模型的樂(lè)觀(guān)鎖功能 [修正] 修正I函數(shù)通過(guò)FILTER_VALIDATE_EMAIL方式傳入常量過(guò)濾的一處錯(cuò)誤 并且過(guò)濾參數(shù)支持?jǐn)?shù)組 [修正] 修正GIF類(lèi)的架構(gòu)函數(shù) [修正] Cache類(lèi)一處常量錯(cuò)誤修正 [修正] 修改自動(dòng)生成的配置文件支持CONF_EXT定義 [刪除] 去掉多余的URL_404_REDIRECT配置參數(shù) [1.0.4 版本] 2008-5-16 修正關(guān)聯(lián)寫(xiě)入和數(shù)據(jù)字段過(guò)濾的沖突 修正哈希子目錄緩存方式 模塊配置文件命名改為:模塊名+_config.php 修正Compare標(biāo)簽 修正CX標(biāo)簽庫(kù)的判斷標(biāo)簽 修正模板引擎的IF標(biāo)簽的條件BUG 修改多數(shù)據(jù)庫(kù)連接和切換機(jī)制 取消addConnect方法的eqType參數(shù),避免了因來(lái)回切換的時(shí)候的錯(cuò)誤 修正Db緩存和Sqlite緩存的數(shù)據(jù)過(guò)期判斷 增加項(xiàng)目配置檢測(cè),如果項(xiàng)目配置文件發(fā)生修改 則重新生成編譯項(xiàng)目緩存 增加跳轉(zhuǎn)頁(yè)面模板和404模板配置配置方式和Action類(lèi)的display方法templateFile參數(shù)一致,默認(rèn)配置: 'ACTION_JUMP_TMPL'=> 'Public:success', 'ACTION_404_TMPL'=> 'Public:404' Action類(lèi)增加404操作方法頁(yè)面跳轉(zhuǎn)操作和404操作支持模板文件配置 修正html標(biāo)簽庫(kù)的link和import標(biāo)簽 增加數(shù)據(jù)查詢(xún)的IS NULL 和 IS NOT NULL支持 修正連貫操作的一些警告錯(cuò)誤 完善join分析 支持left right等方式 修正模板引擎在開(kāi)啟短標(biāo)簽的情況下無(wú)法正常輸出xml標(biāo)識(shí)的問(wèn)題 修正ORG.Date.Date類(lèi)的maxDayOfMonth方法 完善多數(shù)據(jù)庫(kù)連接的切換 修改命令行自動(dòng)創(chuàng)建工具build 修正連貫操作的field方法的判斷錯(cuò)誤 修正Db類(lèi)的一處where條件判斷的小問(wèn)題 rand_string加上中文隨機(jī)字符串生成 修正兼容方法json_encode對(duì)布爾值的判斷 修正ArrayList類(lèi)的addall方法 修正max min avg sum等查詢(xún)方法返回浮點(diǎn)型數(shù)據(jù)錯(cuò)誤的問(wèn)題 修正數(shù)組方式查詢(xún)的自己使用Like問(wèn)題 iterate標(biāo)簽增加mod屬性 用于計(jì)算循環(huán)變量的取模替換原來(lái)的odd屬性 增加Input類(lèi),用于輸入數(shù)據(jù)管理 刪除已經(jīng)廢棄的目錄檢查插件 優(yōu)化模板引擎解析 避免多次實(shí)例化模板解析類(lèi)并簡(jiǎn)化模板解析類(lèi)的寫(xiě)法 去掉架構(gòu)方法定義 修改mobile驗(yàn)證的正則 增加了分頁(yè)類(lèi)關(guān)于負(fù)數(shù)的判斷 部分CX標(biāo)簽的屬性可以支持特殊模板變量 F方法生成的文件會(huì)自動(dòng)加上THINK_PATH判斷 避免直接執(zhí)行 取消了當(dāng)指定模塊和操作不存在的時(shí)候執(zhí)行默認(rèn)模塊和默認(rèn)操作,由用戶(hù)自己定義空模塊和空操作來(lái)處理。 增加了連貫操作的data方法,用于指定要操作的數(shù)據(jù) 去掉了已經(jīng)廢棄的三個(gè)配置參數(shù) DB_CACHE_ON DB_CACHE_TIME DB_CACHE_MAX 增加表單提交的MAGIC_QUOTES_GPC判斷 model類(lèi)的query和execute方法支持使用__TABLE__字符串系統(tǒng)會(huì)自動(dòng)替換成當(dāng)前模型對(duì)應(yīng)的表名 調(diào)整了空操作和直接判斷模板文件的順序空操作優(yōu)先執(zhí)行 修正Cookie類(lèi)支持關(guān)閉瀏覽器就失效的情況設(shè)置COOKIE_EXPIRE為0或者空字符串或者在使用的時(shí)候傳遞參數(shù)0 Cookie::set($name,$value,0); 項(xiàng)目編譯緩存文件也加上是否去掉注釋的開(kāi)關(guān) [1.0.3 版本] 2008-3-16 增加空模塊支持 如果指定的模塊不存在會(huì)首先定位是否存在Empty模塊 增加核心編譯文件的去除空白和注釋的開(kāi)關(guān),在入口文件定義 STRIP_RUNTIME_SPACE 常量為false 可以關(guān)閉去除空白和注釋 Action緩存由原來(lái)的userCache成員屬性控制改為項(xiàng)目參數(shù) ACTION_CACHE_ON 控制,便于動(dòng)態(tài)控制 增加數(shù)據(jù)庫(kù)字段緩存的開(kāi)關(guān) 慣例配置增加DB_FIELDS_CACHE 用以設(shè)置數(shù)據(jù)庫(kù)字段是否緩存,默認(rèn)進(jìn)行緩存 修正xcache和sqlite緩存方式的讀寫(xiě)次數(shù)記錄 使用視圖模型的時(shí)候,如果主鍵是id,不需要再定義getPk方法 修正多語(yǔ)言和多模板的cookie問(wèn)題 入口文件免設(shè)置APP_NAME APP_PATH 完善Cookie類(lèi) 修正模板檢查的時(shí)候組件化的支持 模型類(lèi)的查詢(xún)操作支持連貫方法 去掉了一些廢棄的慣例配置參數(shù) 包括:DATA_CACHE_ON 和 DATA_CACHE_MAX 慣例配置增加了DATA_CACHE_SUBDIR 參數(shù)控制文件緩存方式是否自動(dòng)使用子目錄哈希緩存 在項(xiàng)目根目錄不存在的情況下自動(dòng)創(chuàng)建 完善對(duì)跨庫(kù)查詢(xún)的支持 目錄自動(dòng)創(chuàng)建支持寫(xiě)入安全文件 [ 1.0.2 ] 2008-2-21 Model類(lèi)增加toArray方法 修正因Log類(lèi)的改動(dòng)導(dǎo)致Trace錯(cuò)誤信息無(wú)法正常顯示的問(wèn)題 數(shù)據(jù)查詢(xún)返回的數(shù)據(jù)集由ArrayObject對(duì)象改成數(shù)組 修正Model類(lèi)的create方法在定義字段映射的下面的bug 修正虛擬模型下面create方法的bug Model類(lèi)的facade方法增加數(shù)據(jù)表字段的檢測(cè) 優(yōu)化Image類(lèi)的showAdvVerify方法 修正標(biāo)簽庫(kù)的compare標(biāo)簽 Trace配置文件由原來(lái)的_trace.php更名為trace.php 項(xiàng)目調(diào)試配置文件由原來(lái)的_debug.php更名為debug.php 項(xiàng)目配置文件由原來(lái)的_config.php更名為config.php 路由定義文件由原來(lái)的_routes.php 更名為 routes.php 靜態(tài)定義文件由原來(lái)的_htmls.php 更名為 htmls.php Model類(lèi)的create方法無(wú)需type參數(shù),自動(dòng)判斷新增和編輯模型數(shù)據(jù) 增加第一次運(yùn)行目錄自動(dòng)生成功能(只需要定義入口文件) 默認(rèn)項(xiàng)目編譯緩存目錄為T(mén)emp目錄 [ 1.0.1 ] 2008-2-2 修正Db類(lèi)在Oracle下面的parseLimit方法判斷 優(yōu)化數(shù)據(jù)庫(kù)驅(qū)動(dòng)類(lèi)的查詢(xún)結(jié)果獲取 Model 類(lèi)增加字段的表達(dá)式插入和更新支持 完善了Db類(lèi)的條件查詢(xún)字段中帶有空格的處理 Model類(lèi)增加了delConnect方法用于刪除動(dòng)態(tài)增加的數(shù)據(jù)庫(kù)連接 增強(qiáng)了分布式數(shù)據(jù)庫(kù)的支持 可以設(shè)置是否需要讀寫(xiě)分離 Model類(lèi)增加智能切換功能 switchConnect方法可以自動(dòng)識(shí)別是否是相同的數(shù)據(jù)庫(kù)連接類(lèi)型 增加了組件模塊的URL分割定義配置 COMPONENT_DEPR 包括對(duì)操作鏈的設(shè)置采用相同的參數(shù)定義 修正Model類(lèi)的count等統(tǒng)計(jì)方法會(huì)自動(dòng)緩存的問(wèn)題 DB類(lèi)默認(rèn)關(guān)閉查詢(xún)緩存 修正RBAC組件的權(quán)限判斷 修正組件模塊方式下面的模板文件../Public的替換 修正Html標(biāo)簽庫(kù)的list標(biāo)簽的actionlist屬性的支持 修正PDO類(lèi)在某些數(shù)據(jù)庫(kù)下面的getAll方法的BUG 增加核心緩存文件的開(kāi)關(guān)功能 在入口文件里面設(shè)置 CACHE_RUNTIME 為 false 修正了使用組件模塊的時(shí)候模板文件中__URL__的解析問(wèn)題 修正模板和語(yǔ)言的切換cookie Model類(lèi)增加addConnect和switchConnect方法 用于支持多數(shù)據(jù)庫(kù)的連接 修正了語(yǔ)言包的緩存導(dǎo)致切換語(yǔ)言無(wú)效的問(wèn)題 Db類(lèi)增加多數(shù)據(jù)庫(kù)連接的內(nèi)置支持 修正Model類(lèi)在某些數(shù)據(jù)庫(kù)下面where條件表達(dá)式不支持where 1 的情況 Db類(lèi)增加getLastSql方法用于獲取最后一次查詢(xún)的sql語(yǔ)句 完善Log類(lèi)的操作以及優(yōu)化錯(cuò)誤日志的寫(xiě)入 修正model的數(shù)據(jù)庫(kù)連接配置讀取 在Ajax返回之前保存日志記錄 完善compare標(biāo)簽 改進(jìn)Vendor函數(shù)的baseUrl參數(shù)定義 改進(jìn)項(xiàng)目語(yǔ)言包的定義 不同語(yǔ)言分成不同子目錄 簡(jiǎn)化了query方法的數(shù)據(jù)庫(kù)緩存 增加clearCache方法,用于清空項(xiàng)目相關(guān)緩存目錄 增加firebird數(shù)據(jù)庫(kù)驅(qū)動(dòng)支持 修正pgsql驅(qū)動(dòng) 修正~app.php 文件的編譯緩存路徑的問(wèn)題 增加編譯緩存路徑的設(shè)置 RUNTIME_PATH [ 1.0.0 ] 2007-12-25 優(yōu)化了執(zhí)行效率和內(nèi)存開(kāi)銷(xiāo) Import方法增加同名檢測(cè)和類(lèi)檢測(cè) 完善PHP 5.2.0以下版本的支持 去掉了核心對(duì)Config、Language、Cookie和Session類(lèi)庫(kù)的依賴(lài) 去掉了Action類(lèi)內(nèi)置的默認(rèn)操作 改進(jìn)了MySqli的驅(qū)動(dòng)類(lèi)庫(kù) 修正了主鍵不是自動(dòng)增長(zhǎng)的時(shí)候Model的add方法返回錯(cuò)誤 修正了mysqli的escape_string方法 修正了PDO的連接params參數(shù)問(wèn)題 修正了Model的findAll的關(guān)聯(lián)查詢(xún)問(wèn)題 修正了Model類(lèi)的getModelName方法問(wèn)題 修正了RBAC的模塊大小寫(xiě)設(shè)置 去掉volist resultset標(biāo)簽,均作為iterate標(biāo)簽的別名 增加了項(xiàng)目編譯機(jī)制和核心類(lèi)庫(kù)編譯機(jī)制 標(biāo)簽庫(kù)定義增加標(biāo)簽的別名定義 XML模版結(jié)束標(biāo)簽增加對(duì)空格的支持 增加compare標(biāo)簽和eq neq gt egt lt elt heq 和nheq標(biāo)簽別名 增加了多模版和多語(yǔ)言的開(kāi)關(guān) RBAC認(rèn)證增加了操作的認(rèn)證設(shè)置,之前只支持模塊的認(rèn)證設(shè)置 折疊 編輯本段 新手學(xué)習(xí)一個(gè)好的框架還要配合好的學(xué)習(xí)路線(xiàn),就如同去旅游一樣要選擇好的旅游線(xiàn)路。雖然學(xué)習(xí)這個(gè)東西沒(méi)有定式,完全看個(gè)人情況,但是我還是盡可能可以總結(jié)出一些推薦的學(xué)習(xí)路線(xiàn),希望可以適用大多數(shù)的TP初學(xué)者。如果你還不會(huì)PHP,推薦先進(jìn)行PHP基礎(chǔ)編程學(xué)習(xí)。 路線(xiàn)一(針對(duì)會(huì)使用PHP開(kāi)發(fā)的新手) 1、查看TP的功能特性和典型應(yīng)用(知道Tp的優(yōu)勢(shì)和用途 官方首頁(yè) 案例中心 ) 2、查看在線(xiàn)示例中心的例子(大概有個(gè)感性認(rèn)識(shí) 示例中心 ) 3、查看官方提供的快速入門(mén)文檔(從基本開(kāi)始) 4、下載完整包運(yùn)行調(diào)試自帶的示例中心研究(了解代碼 最新下載 ) 5、去官方論壇提問(wèn)(針對(duì)示例不解或者有問(wèn)題的地方) 6、自己嘗試做一些簡(jiǎn)單例子(鞏固和消化) 7、閱讀官方首頁(yè)提供的其他文檔(心中開(kāi)朗) 8、改進(jìn)自己的例子(看完指南后體驗(yàn)新功能) 9、有把握開(kāi)始做項(xiàng)目(真正實(shí)踐) 10、遇到問(wèn)題查閱官方API手冊(cè)或者論壇提問(wèn) 11、到官方論壇匯報(bào)BUG和建議 12、到論壇分享你的經(jīng)驗(yàn) 13、有時(shí)間了多看看TP的源碼 14、給TP貢獻(xiàn)代碼和類(lèi)庫(kù)(學(xué)習(xí)的成果) 幾個(gè)學(xué)習(xí)守則 欲速則不達(dá),踏實(shí)進(jìn)取 戒驕戒躁、把握心態(tài) 文檔很難全面官方論壇是你學(xué)習(xí)交流的最好地方 實(shí)踐出真知 折疊 編輯本段 版本發(fā)布日期ThinkPHP發(fā)展歷程,無(wú)數(shù)TPer一起見(jiàn)證了ThinkPHP的成長(zhǎng): 2006年01月15日,ThinkPHP的雛形版本FCS0.6.0發(fā)布; 2006年02月12日,(元霄節(jié))發(fā)布FCS 0.6.1 版本,Google討論組成立; 2006年03月15日,F(xiàn)CS 0.7.0版本發(fā)布; 2006年05月07日,F(xiàn)CS 0.8版本發(fā)布; 2006年10月25日,F(xiàn)CS 0.9.0版本發(fā)布; 2006年12月25日,SF項(xiàng)目和Google網(wǎng)站ThinkPHP項(xiàng)目申請(qǐng)完成; 2007年01月01日,F(xiàn)CS正式更名為T(mén)hinkPHP; 2007年01月08日,ThinkPHP 0.9.5版發(fā)布同期官方網(wǎng)站開(kāi)通; 2007年02月21日,TOPThink社區(qū)暨新版ThinkPHP官方網(wǎng)站開(kāi)通,并提供社區(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正式版本并啟動(dòng)商業(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)和飛躍,這是一次劃時(shí)代的版本; 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完整版 ; 2014年12月24日,ThinkPHP發(fā)布3.2.3完整版; |
|
來(lái)自: 邵飛翔 > 《待分類(lèi)》