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