模塊設計
5.0版本對模塊的功能做了靈活設計,默認采用多模塊的架構,并且支持單一模塊設計,所有模塊的命名空間均以app作為根命名空間(可配置更改)。
目錄結構
標準的(de)應用(yong)和模(mo)塊目錄(lu)結構如下:
├─application 應用目錄(可設置)
│ ├─common 公共模塊目錄(可選)
│ ├─common.php 公共函數文件
│ ├─route.php 路由配置文件
│ ├─database.php 數據庫配置文件
│ ├─config.php 應用配置文件
│ ├─module1 模塊1目錄
│ │ ├─config.php 模塊配置文件
│ │ ├─common.php 模塊函數文件
│ │ ├─controller 控制器目錄
│ │ ├─model 模型目錄(可選)
│ │ ├─view 視圖目錄(可選)
│ │ └─ ... 更多類庫目錄
│ │
│ ├─module2 模塊2目錄
│ │ ├─config.php 模塊配置文件
│ │ ├─common.php 模塊函數文件
│ │ ├─controller 控制器目錄
│ │ ├─model 模型目錄(可選)
│ │ ├─view 視圖目錄(可選)
│ │ └─ ... 更多類庫目錄
遵循ThinkPHP5.0的命名規范,模塊目錄全部采用小寫和下劃線命名。
模塊名(ming)稱(cheng)請(qing)避(bi)免(mian)使用PHP保留(liu)關鍵字(保留(liu)字列表參見 ),否則會造成系統錯誤(wu)。
其中common模塊是(shi)(shi)一(yi)個特殊的(de)(de)(de)模塊,默(mo)認是(shi)(shi)禁(jin)止直(zhi)接訪問的(de)(de)(de),一(yi)般用(yong)于(yu)放(fang)置一(yi)些公共的(de)(de)(de)類(lei)庫用(yong)于(yu)其他模塊的(de)(de)(de)繼承(cheng)。
模塊類庫
一個模塊下面的類庫文件的命名空間統一以app模塊名開頭,例如:
// index模塊的Index控制器類
appindexcontrollerIndex
// index模塊的User模型類
appindexmodelUser
其中app可以通過(guo)定義的方(fang)式更改,例如我們在應用配(pei)置文件中修改:
'app_namespace' => 'application',
那么,index模塊的類庫命名空間則變成(cheng):
// index模塊的Index控制器類
applicationindexcontrollerIndex
// index模塊的User模型類
applicationindexmodelUser
更(geng)多的(de)關(guan)于類庫和命名(ming)空(kong)間的(de)關(guan)系(xi)可以參考(kao)下(xia)一章節:命名(ming)空(kong)間。
模塊和控制器隱藏
由(you)于默認是(shi)采用(yong)多模(mo)塊(kuai)(kuai)的(de)(de)支(zhi)持(chi),所以(yi)(yi)多個模(mo)塊(kuai)(kuai)的(de)(de)情況(kuang)下必須在URL地址中標識當前模(mo)塊(kuai)(kuai),如(ru)果只有一(yi)個模(mo)塊(kuai)(kuai)的(de)(de)話,可以(yi)(yi)進行模(mo)塊(kuai)(kuai)綁定(ding),方(fang)法是(shi)應用(yong)的(de)(de)入(ru)口文件中添加如(ru)下代碼:
// 綁定(ding)當前(qian)訪問到(dao)index模塊
define('BIND_MODULE','index');
綁定后(hou),我(wo)們的URL訪問(wen)地址則變(bian)成:
訪問的模塊是index模塊。
如果你的應用比較簡(jian)單,模塊和(he)控(kong)制器(qi)都只有一個,那么可以在應用公共文件中(zhong)綁定模塊和(he)控(kong)制器(qi),如下:
// 綁(bang)定當前(qian)訪問到index模(mo)塊(kuai)的index控(kong)制器
define('BIND_MODULE','index/index');
設(she)置后,我們的URL訪問地址則變成:
訪問的模塊是index模塊,控制器是Index控制器。
單一模塊
如果你的應用比較簡(jian)單(dan),只有唯一一個模塊(kuai)(kuai),那么可以進(jin)一步簡(jian)化成(cheng)使用單(dan)一模塊(kuai)(kuai)結構(gou),方(fang)法如下:
首先在(zai)應用配(pei)置(zhi)文件中(zhong)定義:
// 關閉多模塊設計
'app_multi_module' => false,
然(ran)后,調整應用目錄(lu)的結構為如下:
├─application 應用目錄(可設置)
│ ├─controller 控制器目錄
│ ├─model 模型目錄
│ ├─view 視圖目錄
│ ├─ ... 更多類庫目錄
│ ├─common.php 函數文件
│ ├─route.php 路由配置文件
│ ├─database.php 數據庫配置文件
│ └─config.php 配置文件
URL訪問(wen)地址變成(cheng)
同時(shi),單一模塊設計下的應(ying)用類(lei)庫的命名空間也有所調整,例(li)如:
原來的
appindexcontrollerIndex
appindexmodelUser
變成
appcontrollerIndex
appmodelUser
更多的URL簡化和定制還可以(yi)通過(guo)URL路(lu)由功能實(shi)現。
