ThinkPHP5路由

路由作用

1.根據(jù)實現(xiàn)定義的路由規(guī)則,檢驗URL請求,確定執(zhí)行或者拒絕;
2.路由規(guī)則可自定義,隱藏了原URL地址,使訪問地址,使訪問更安全,地址更優(yōu)雅。

例如:http://tp5.com/edu/test/demo1http://tp5.com/demo1

路由模式

開啟路由后,其實只有二中狀態(tài),要么全部URL請求都采用路由訪問,要么是有路由規(guī)則的用路由訪問,沒有的還是按照PATH_INFO規(guī)則訪問。

1.普通模式

配置:'url_route_on=>false

訪問:全部采用PATH_INFO格式

2.混合模式

配置:'url_route_on'=>true,'url_route_must'=>false,

已注冊用路由訪問,為注冊仍用PATH_INFO訪問

3.強制模式

配置:'url_route_on'=>true,'url_rote_must'=>false,

全部訪問必須采用路由模式,包括首頁'/'

路由注冊

1.動態(tài)方法:

Route:rule('路由規(guī)則','路由地址','請求類型',[路由參數(shù)],[變量規(guī)則]);

2.配置數(shù)組(配置文件方式):

return [

'路由規(guī)則'=>'路由地址',

'路由規(guī)則'=>['路由地址',[路由參數(shù)],[變量規(guī)則]]

];

路由規(guī)則

路由規(guī)則就是用戶最終用來訪問的URL地址,并非原始URL地址;

路由標識符/:變量名1/:變量名2/:[:可選變量名]

路由地址

路由地址,是用戶最終要訪問的URL,也是路由規(guī)則的目標,它不像路由規(guī)則,可以通過路由參數(shù)和變量規(guī)則進行檢驗,所以用戶一定要確保路由地址的有效性。

1.路由地址

路由地址,就是用戶用路由規(guī)則訪問頁面時,真實跳轉到的地址;

2.路由地址的種類

1)路由到:模塊/控制器/操作;

基本語法:Route::rule('路由規(guī)則','模塊/控制器/操作');

重點理解:

可訪問控制器:'url_controller_layer'=>'controller',

按從右到左的順序進行地址解析:操作->控制器->模塊,

支持額外參數(shù)(查詢方式):?變量名1=值1&變量名2=值2..

2)路由到:操作方法;

基本語法:Route::rule('路由規(guī)則','@模塊/控制器/操作');

重點理解:

跳過模塊初始化,直接執(zhí)行控制器中的方法;

模塊初始化:配置文件和公共文件;

調(diào)用試圖時必須設置完整模版文件的路徑。

3)路由到:類的方法(動態(tài)與靜態(tài))

基本語法:

Route::rule('路由規(guī)則','\完整命名空間\類名@動態(tài)操作');

Route::rule('路由規(guī)則','\完整命名空間\類名::靜態(tài)操作');

重點理解:

類必須創(chuàng)建在應用目錄或子目錄中;

靜態(tài)方法支持外部動態(tài)訪問,但建議在語法上分開;

為了項目規(guī)范,除非不得已,否者盡可能少用。

4)路由到:重定向地址(301)

基本語法:Route::rule('路由規(guī)則','重定向地址');

重點理解:

重定向地址:'/'或者'http://'開頭的外部地址;

'/':是以當前可訪問的Web目錄開始:如'public';

外部地址是301跳轉,適用與網(wǎng)站遷移。

5)路由到:閉包函數(shù)

基本語法:

Route::rule('路由規(guī)則',function([參數(shù)]){

//閉包函數(shù)

});

重點理解:

閉包即使函數(shù)中的函數(shù),或方法中的方法;

閉包函數(shù)可以接受通過路由規(guī)則傳過來的參數(shù);

不再執(zhí)行任何操作,相當于把方法直接定義在參數(shù)中。

路由參數(shù)

路由參數(shù)是用來檢測路由地址的,準確的講,是用來校驗除了路由變量之外額所有內(nèi)容。

1.路由參數(shù)

路由參數(shù)是用來驗證當前的路由規(guī)則是否有效的重要依據(jù);

2.路由參數(shù)的種類

1)請求類型:['method'=>'get|post'];

請求類型:最常用的是GET和POST,其它了解即可(如delete,put等);

使用方法:

如注冊方法已生命類型則無設置:Route::get()/post();

Route::rule()/any():['method'=>'get|post'];

使用路由配置文件數(shù)組定義:['method'=>'get|post'];

2)URL后綴:['ext'=>'html|shtml']/['deny_ext'=>'php'];

限定可訪問路由規(guī)則的URL后綴名稱,默認為html;

使用方法:

允許的URL后綴:['ext'=>'html|shtml'];

禁止的URL后綴:['deny_ext'=>'jpg|png'];

允許URL后綴為空:['ext'=>''];

禁止的URL后綴為空:['deny_ext'=>''];

3)回調(diào)函數(shù):['callback'=>'tp5.com'];

說明:回調(diào)函數(shù)返回true則路由規(guī)則有效,否者無效;

使用方法:

回調(diào)函數(shù)寫在應用公共方法中:common.php;

語法:['callback'=>'回調(diào)函數(shù)名稱'];

例如:用回調(diào)函數(shù)檢測是否存在某個應用配置項,來決定是否執(zhí)行路由規(guī)則。

4)域名檢測:['domain'=>'tp5.com'];

說明:檢測調(diào)用當前路由規(guī)則的域名是不是參數(shù)所指定的域名;

使用方法:

語法格式:['domain'=>'域名'];

支持子域名:['domain'=>'域名'];

5)更多參數(shù),如綁定模塊/合并額外參數(shù)等請查閱手冊。

變量規(guī)則

1.路由變量規(guī)則:

用來對動態(tài)路由規(guī)則中的變量部分,進行校驗的依據(jù)。

2.變量規(guī)則的使用域:

1 )局部變量規(guī)則:僅對當前路由有效

Route::rule('路由規(guī)則','路由地址','請求類型',['路由參數(shù)'],['變量規(guī)則']);

變臉規(guī)則:['動態(tài)變量1'=>'正則表達式1','動態(tài)變量2'=>'正則表達式2'];

例如:Route::rule('demo','index/demo','GET',[],['id'=>'\d{4}']);

2)全局變量規(guī)則:已注冊的全部路由規(guī)則都要遵守

單獨創(chuàng)建:Route::pattern('變量名','正則表達式');

批量創(chuàng)建:

Route::pattern([

'變量名1'=>'正則表達式1',

'變量名2'=>'正則表達式2',

]);

路由變量規(guī)則和路由規(guī)則可以寫在一起,以數(shù)組的形式。

3..正則表達式

描述字符串匹配模式,主要用于字符串的查找/替換與分割;

4.正則表達式有幾部分組成

四部分組成:定界符,院子,元字符和修正符。

定界符:通常用#,~~,/等非原子或元字符反斜杠\都行。

原子:需要匹配的字符,由可見與不可見字符組成;

元字符:限定或修飾原子部分,不能單獨使用;

修正符:限定或修飾整個正則表達式。

變量的規(guī)則是路由中的一個重點,也是保證路由規(guī)則安全的重要手段,當全局與局部的變量規(guī)則作用在同一個路由變量上面時,局部規(guī)則覆蓋全局規(guī)則,即局部的優(yōu)先級高于全局。

路由分組

路由分組,看上去很直觀,其實很抽象,它的高效云信,依賴于項目前期的科學規(guī)劃。

1.什么情況下,適合進行路由分組?

當多個路由規(guī)則中,由相同的路由前綴時,分組可以可以提高效率。

2.分組方法

動態(tài)方法:Route::group('分組名稱',[路由地址,[路由參數(shù)],[變量規(guī)則]]);

配置數(shù)組:return['規(guī)則'=>[路由地址,[路由參數(shù)],[變量規(guī)則]];

1)路由參數(shù)分類

閉包分組:

Route::group('',function(){

//創(chuàng)建路由規(guī)則語句

})

虛擬分組:根據(jù)相同路由參數(shù)進行分組

別名路由

1.快速注冊同一控制器下所有操作方法(不支持變量規(guī)則)

動態(tài)方法:Route::alias('規(guī)則名稱','模塊/控制器',[路由參數(shù)]);

靜態(tài)數(shù)組:

return[

'alias'=>['規(guī)則名稱','模塊/控制器',[路由參數(shù)]],

];

別名路由,可以進一步簡化路由規(guī)則,但是不支持變量規(guī)則,僅僅是縮短URL地址,使用請求地址更壞短小優(yōu)雅。借助路由參數(shù)中的allow和except參數(shù)實現(xiàn)黑白名單功能,比較有實際意義。

路由綁定

1.入口綁定

在入口文件中更添加:BIND_MODULE系統(tǒng)常量

//將當前訪問綁定模塊/控制器

define('BIND_MODULE','index');//模塊級

define('BIND_MODULE','index/demo');//控制器級

2.入口自動綁定

入口文件名與應用中的模塊自動綁定

1)入口自動綁定模塊設置:'auto_bind_module'=>true,

2)創(chuàng)建需要綁定的入口文件:列如:admin.php

3)創(chuàng)建與入口文件對應的模塊與控制器:application/admin/controller/Index.php,并創(chuàng)建默認index()方法

4)直接訪問:域名/admin.php,就會自動執(zhí)行admin模塊中默認控制器中的默認方法

3.動態(tài)綁定

語法:Route::bind('模塊[/控制器][/操作]');

1)綁定當前的URL到模塊

Route::bind('模塊]');

2)綁定當前的URL到模塊下面的控制器

Route::bind('模塊/控制器');

3)綁定當前的URL到模塊下面的控制器中的指定操作

Route::bind('模塊/控制器/操作');

4.綁定到命名空間或者類

1)綁定當前的URL到指定命名空間

Route::bind('app\index\controller','')

2)綁定當前的URL到類

ThinkPHP5路由(原文地址

結束。


你們的支持也是我前進的動力,非常感謝支持!

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容