日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 获取路由参数,路由参数 · ThinkPHP5.0完全开发手册 · 看云

發布時間:2024/2/28 php 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 获取路由参数,路由参数 · ThinkPHP5.0完全开发手册 · 看云 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

## 路由參數

路由參數是指可以設置一些路由匹配的條件參數,主要用于驗證當前的路由規則是否有效,主要包括:

|參數|說明|

|---|---|

|method|請求類型檢測,支持多個請求類型|

|ext|URL后綴檢測,支持匹配多個后綴|

|deny_ext|URL禁止后綴檢測,支持匹配多個后綴|

|https|檢測是否https請求|

|domain|域名檢測|

|before_behavior|前置行為(檢測)|

|after_behavior|后置行為(執行)|

|callback|自定義檢測方法|

|merge_extra_vars| 合并額外參數|

|bind_model|綁定模型(`V5.0.1+`)|

|cache|請求緩存(`V5.0.1+`)|

|param_depr|路由參數分隔符(`V5.0.2+`)|

|ajax|Ajax檢測(`V5.0.2+`)|

|pjax|Pjax檢測(`V5.0.2+`)|

`V5.0.3+`版本對`ajax`/`pjax`/`https`條件支持`false`。

> 這些路由參數可以混合使用,只要有任何一條參數檢查不通過,當前路由就不會生效,繼續檢測后面的路由規則。

### 請求類型

如果指定請求類型注冊路由的話,無需設置`method`請求類型參數。如果使用了`rule`或者`any`方法注冊路由,或者使用路由配置定義文件的話,可以單獨使用`method`參數進行請求類型檢測。

使用方法:

~~~

// 檢測路由規則僅GET請求有效

Route::any('new/:id','News/read',['method'=>'get']);

// 檢測路由規則僅GET和POST請求有效

Route::any('new/:id','News/read',['method'=>'get|post']);

~~~

### URL后綴

~~~

// 定義GET請求路由規則 并設置URL后綴為html的時候有效

Route::get('new/:id','News/read',['ext'=>'html']);

~~~

支持匹配多個后綴,例如:

~~~

Route::get('new/:id','News/read',['ext'=>'shtml|html']);

~~~

可以設置禁止訪問的URL后綴,例如:

~~~

// 定義GET請求路由規則 并設置禁止URL后綴為png、jpg和gif的訪問

Route::get('new/:id','News/read',['deny_ext'=>'jpg|png|gif']);

~~~

>[danger] `V5.0.7`版本以上,`ext`和`deny_ext`參數允許設置為空,分別表示不允許任何后綴以及必須使用后綴訪問。

### 域名檢測

支持使用完整域名或者子域名進行檢測,例如:

~~~

// 完整域名檢測 只在news.thinkphp.cn訪問時路由有效

Route::get('new/:id','News/read',['domain'=>'news.thinkphp.cn']);

// 子域名檢測

Route::get('new/:id','News/read',['domain'=>'news']);

~~~

### HTTPS檢測

支持檢測當前是否HTTPS訪問

~~~

Route::get('new/:id','News/read',['https'=>true]);

~~~

### 前置行為檢測

支持使用行為對路由進行檢測是否匹配,如果行為方法返回false表示當前路由規則無效。

~~~

Route::get('user/:id','index/User/read',['before_behavior'=>'\app\index\behavior\UserCheck']);

~~~

行為類定義如下:

~~~

namespace app\index\behavior;

class UserCheck

{

public function run()

{

if('user/0'==request()->url()){

return false;

}

}

}

~~~

### 后置行為執行

可以為某個路由或者某個分組路由定義后置行為執行,表示當路由匹配成功后,執行的行為,例如:

~~~

Route::get('user/:id','User/read',['after_behavior'=>'\app\index\behavior\ReadInfo']);

~~~

其中\app\index\behavior\ReadInit 行為類定義如下:

~~~

namespace app\index\behavior;

use app\index\model\User;

class ReadInfo {

public function run(){

$id = request()->route('id');

request()->user = User::get($id);

}

}

~~~

如果成功匹配到`new/:id`路由后,就會執行行為類的run方法,參數是路由地址,可以動態改變。

### Callback檢測

也可以支持使用函數檢測路由,如果函數返回false則表示當前路由規則無效,例如:

~~~

Route::get('new/:id','News/read',['callback'=>'my_check_fun']);

~~~

### 合并額外參數

通常用于完整匹配的情況,如果有額外的參數則合并作為變量值,例如:

~~~

Route::get('new/:name$','News/read',['merge_extra_vars'=>true]);

~~~

http://serverName/new/thinkphp/hello

會被匹配到,并且`name`變量的值為 `thinkphp/hello`。

### 配置文件中添加路由參數

如果使用配置文件的話,可以使用:

~~~

return [

'blog/:id' => ['Blog/update',['method' => 'post','ext'=>'html|shtml']],

];

~~~

### 路由綁定模型(`V5.0.1`)

可以在當前路由匹配后綁定模型,后面則同過方法的對象自動注入來獲取。

~~~

Route::get('new/:name$','News/read',['bind_model'=>['User','name']]);

~~~

更多細節可以參考請求->依賴注入。

### 緩存路由請求

可以對當前的路由請求進行緩存處理,例如:

~~~

Route::get('new/:name$','News/read',['cache'=>3600]);

~~~

表示對當前路由請求緩存3600秒。

總結

以上是生活随笔為你收集整理的php 获取路由参数,路由参数 · ThinkPHP5.0完全开发手册 · 看云的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。