路由綁定
可以使用路由綁定簡化(hua)URL或(huo)者(zhe)路由規則的定義,綁定支持如下方式:
綁定到模塊/控制器/操作
把當前的URL綁(bang)定到模塊/控制器(qi)/操作(zuo),最多(duo)支持(chi)綁(bang)定到操作(zuo)級別(bie),例(li)如在路由配(pei)置文件中添加:
// 綁定當前的URL到 index模塊
Route::bind('index');
// 綁定當前的URL到 index模塊的blog控制器
Route::bind('index/blog');
// 綁定當前的URL到 index模塊的blog控制器的read操作
Route::bind('index/blog/read');
該方式針(zhen)對路由到模(mo)塊/控制(zhi)器/操作有效,假如我們綁定(ding)到了index模(mo)塊的blog控制(zhi)器,那么原(yuan)來的訪問URL從
http://serverName/index/blog/read/id/5
可以簡化成
http://serverName/read/id/5
如果定義(yi)了路(lu)由
Route::get('index/blog/:id','index/blog/read');
那么訪(fang)問URL就變(bian)成了(le)
http://serverName/5
綁定到命名空間
把當前的URL綁定到某個指定的命名空間,例如:
// 綁定(ding)命(ming)名空間
Route::bind('\app\index\controller','namespace');
那么,我(wo)們接下來只需要(yao)通過
http://serverName/blog/read/id/5
就可以直接訪問 \app\index\controller\Blog類的read方法。
綁定到類
把當前的URL直接綁定到某(mou)個指定的類,例如:
// 綁定到(dao)類
Route::bind('\app\index\controller\Blog','class');
那么,我們接下來只(zhi)需要通過
http://serverName/read/id/5
就可以直接訪問 \app\index\controller\Blog類的read方法。
注意:綁定到(dao)命名空間和(he)類之后,不會(hui)進(jin)行模塊的初(chu)始化(hua)工作。
入口文件綁定
如果我們(men)需要給某個入口文(wen)件綁定模塊(kuai),可以使用下面兩種(zhong)方式:
常量定義
只需要入口文件添加BIND_MODULE常量,即(ji)可(ke)把當前入口文件綁定(ding)到(dao)指(zhi)定(ding)的模塊或者控制(zhi)器,例如:
// 定義應用目錄(lu)
define('APP_PATH', __DIR__ . '/../application/');
// 綁(bang)定(ding)到index模塊
define('BIND_MODULE','index');
// 加(jia)載框架(jia)引導文(wen)件
require __DIR__ . '/../thinkphp/start.php';
自動入口綁定
如(ru)果你的(de)入口(kou)(kou)文(wen)件(jian)(jian)都是對應(ying)實際的(de)模塊名,那么(me)可以使用(yong)(yong)入口(kou)(kou)文(wen)件(jian)(jian)自動綁(bang)定模塊的(de)功能,只(zhi)需要在應(ying)用(yong)(yong)配置文(wen)件(jian)(jian)中添加(jia):
// 開啟入(ru)口文件自動綁定模(mo)塊
'auto_bind_module' => true,
當我們重新添加一個 public/demo.php入口文件,內容和public/index.php一樣:
// 定義(yi)應用目錄
define('APP_PATH', __DIR__ . '/../application/');
// 加載框架引(yin)導文(wen)件
require __DIR__ . '/../thinkphp/start.php';
但其實訪問 demo.php的時候,其實已經自動綁定到了demo模塊。
