解密ThinkPHP3.1.2版本之獨立分組功能應(yīng)用
ThinkPHP的分組功能是廣為開發(fā)者使用的一個具有很大實用價值的功能,該功能可以解決中大型項目情況中MVC分層文件過多導(dǎo)致不易管理的問題。
而ThinkPHP3.1.2版本添加的獨立分組功能則為此類問題提出了新的解決思路,更加適合組件化的開發(fā)模式。我們就此了解下這一功能。
1.概述
獨立分組功能不影響原有分組模式的運行,并且原有分組模式僅需移動目錄結(jié)構(gòu)即可完成獨立分組模式的升級,無需任何應(yīng)用代碼的改動。
而且新的獨立分組可以很方便的獨立裝卸和移動,可以擺脫原來普通分組文件分散在各個不同的目錄下面的困擾。
獨立分組的URL訪問和原先的普通分組一樣,沒有任何區(qū)別,配置分組列表也仍然采用APP_GROUP_LIST參數(shù)配置。設(shè)置默認分組則采用DEFAULT_GROUP參數(shù)。例如:
'APP_GROUP_LIST'=>'Home,Admin', 'DEFAULT_GROUP'=>'Home',
雖然新的獨立分組已經(jīng)完全可以取代原有普通分組模式,不過為了考慮到原有分組項目的平滑升級,此次新版增加了一個配置參數(shù):
APP_GROUP_MODE 用于配置分組模式,默認為0 為原有的普通分組模式,如果設(shè)置為1 則表示啟用獨立分組模式。
是否需要升級為獨立分組模式完全由你決定,相信你看完后面的內(nèi)容會有明智的選擇。
2.目錄結(jié)構(gòu)
啟用獨立分組模式后,你需要在項目目錄下面創(chuàng)建獨立分組目錄,該目錄可以由項目配置文件通過APP_GROUP_PATH參數(shù)配置,默認值為Modules。假設(shè)我們沒有做任何更改的話,在Modules目錄下面就是每個分組的子目錄,每個分組是完全獨立的,包括模型、控制器、視圖、配置和函數(shù)文件等等,你可以很方便的實現(xiàn)分組的移動和卸載。
標(biāo)準(zhǔn)的獨立分組目錄結(jié)構(gòu)為(以一個Home分組為例):
─Home Home分組目錄 ├─Common 分組函數(shù)目錄 ├─Conf 分組配置目錄 ├─Lang 分組語言包目錄 ├─Action 分組Action控制器目錄 ├─Model 分組Model模型目錄 ├─Widget 分組Widget目錄 ├─ORG 分組擴展類庫目錄 ├─... 其他分層目錄 └─Tpl 分組模板目錄
(注意:獨立分組的目錄結(jié)構(gòu)目前需要手動創(chuàng)建)
基本上可以看到,獨立分組除了沒有入口文件外,其他獨立項目具備的結(jié)構(gòu)都基本具備了。
從原來的普通分組升級到獨立分組,只需要在項目配置文件中增加:
'APP_GROUP_MODE'=>1
然后把原來項目Lib目錄下面屬于對應(yīng)分組的MVC文件,以及分組的函數(shù)、配置和語言(如果有的話)文件依次對照上面的獨立分組的目錄結(jié)構(gòu)放入對應(yīng)目錄即可。
3.公共文件
采用獨立分組后,原來的項目Lib目錄則作為分組公共類庫文件設(shè)計,如果你的多個獨立分組需要調(diào)用公共的Action或者Model類的話(其實還包括其他的分層控制器和模型類),則可以把這些公共類放入項目的Lib目錄下面的對應(yīng)目錄(實際的升級過程中,這些公共類庫文件基本上保持目錄結(jié)構(gòu)不變,所以無需移動)。
分組的公共類庫文件無需手動加載,均采用了自動加載機制。
所以,最終采用獨立分組模式的實際項目目錄結(jié)構(gòu)如下:
├─index.php 項目入口文件 ├─Common 項目公共文件目錄 ├─Conf 項目配置目錄 ├─Lang 項目語言目錄 ├─Modules 獨立分組目錄 │ ├─Home Home分組目錄(獨立分組目錄結(jié)構(gòu)參考前面) │ ├─Admin Admin分組目錄 │ └─... 其他分組目錄 ├─Lib 分組公共類庫目錄 │ ├─Action 公共Action類庫目錄 │ ├─Behavior 公共行為類庫目錄 │ ├─Model 公共模型類庫目錄 │ └─... 其他公共類庫目錄 ├─Runtime 項目運行時目錄 │ ├─Cache 模板緩存目錄 │ ├─Data 數(shù)據(jù)緩存目錄 │ ├─Logs 日志文件目錄 │ └─Temp 臨時緩存目錄
4.模板文件
獨立分組的模板文件由項目的Tpl目錄移動到了獨立分組目錄的Tpl目錄,原來的模板分組子目錄不再需要,例如:
Tpl/Home/Index/index.html
移動到獨立分組下的Tpl目錄后,應(yīng)該是:
Tpl/Index/index.html
模板主題功能仍然支持。
5.調(diào)用類庫
獨立分組在導(dǎo)入類庫的時候,使用方法和導(dǎo)入項目類庫基本一致,例如:
import('@.Action.TestAction'); // 導(dǎo)入當(dāng)前分組下的Action/TestAction.class.php import('@.ORG.Util.Image'); // 導(dǎo)入當(dāng)前分組下的ORG/Util/Image.class.php
獨立分組不考慮多個分組之間的交互和調(diào)用,只能調(diào)用公共類庫。
如果你必須調(diào)用其他分組的類庫,而沒有采用公共類庫設(shè)計的話,那么可以使用:
import('ORG.Util.Image',APP_PATH.'Modules/Admin');
不過,采用獨立分組后,A方法和R方法、D方法均不支持跨分組調(diào)用了。
- thinkphp學(xué)習(xí)筆記之多表查詢
- ThinkPHP php 框架學(xué)習(xí)筆記
- ThinkPHP學(xué)習(xí)筆記(一)ThinkPHP部署
- thinkPHP學(xué)習(xí)筆記之安裝配置篇
- 淺談ThinkPHP5.0版本和ThinkPHP3.2版本的區(qū)別
- thinkphp3.2.3版本的數(shù)據(jù)庫增刪改查實現(xiàn)代碼
- ThinkPHP 3.2 版本升級了哪些內(nèi)容
- ThinkPHP3.1.3版本新特性概述
- 解密ThinkPHP3.1.2版本之模板繼承
- 從ThinkPHP3.2.3過渡到ThinkPHP5.0學(xué)習(xí)筆記圖文詳解
相關(guān)文章
使用composer 安裝 laravel框架的方法圖文詳解
這篇文章主要介紹了使用composer 安裝 laravel框架的方法,結(jié)合圖文說明的形式詳細分析了composer 安裝 laravel框架的具體步驟、相關(guān)命令與操作注意事項,需要的朋友可以參考下2019-08-08laravel 解決Validator使用中出現(xiàn)的問題
今天小編就為大家分享一篇laravel 解決Validator使用中出現(xiàn)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-10-10thinkPHP5.1框架路由::get、post請求簡單用法示例
這篇文章主要介紹了thinkPHP5.1框架路由::get、post請求簡單用法,結(jié)合實例形式分析了thinkPHP5.1路由get、post請求基本使用方法,需要的朋友可以參考下2019-05-05