這一切的一切都得從“Hello world”說起!!!
有很多東西在thinkPHP的官方開發檔案上其實都有講到,我在這里只是想記錄自己每天堅持學習PHP的情況,今天接觸ThinkPHP的路由,路由這一塊可以更好的隱藏我們網站的結構,讓我們的網站更安全,這是路由帶給我們的一些好處,下面來記錄ThinkPHP中的路由這一塊主要內容,
一、配置路由
在ThinkPHP框架中找到路由目錄下的php檔案,系統默認會給我們一個route.php的這個檔案,當然我們也能在這個目錄下創建自己的一個路由檔案,系統會自動加載這個目錄下的所有檔案
這個就是路由的檔案

ThinkPHP的目錄結構

二、配置一個簡單路由規則
/** *配置一個簡單的路由規則 第一個引數自定義 第二個引數依次是模塊/控制器/方法 * ------->路由執行是從方法開始找,接著找控制器,再是模塊 若不填寫:系統默認使用組態檔中所配置的默認 * 可以在組態檔app.php中配置默認的模塊、控制器和方法 */ Route::rule('good','index/index/index');
這時在瀏覽器中只需要輸入“http://域名/good” 就能找到指定的模塊下的控制器中的方法,也可在后方加.html,需要在組態檔app.php中設定URL偽靜態的后綴,默認為html
三、路由運算式
//動態路由 //id為動態獲取的,也就是在good/后面隨意輸入都可以路由到index/index/index Route::rule('good/:id','index/index/index'); //當然id里面的值也是可以獲取的 //在控制器中使用門面下的Request中的param('id')可以獲取id的值 Route::rule('good/[:id]','index/index/index');
//路由地址 直接路由到操作方法
//看起來似乎和前面的沒什么不同,本質的區別是直接執行某個控制器的方法,不需要去決議模塊/控制器/操作方法這些,同時不會去初始化模塊
Route::rule('good','@index/index/index');
四、路由重定向
比如說重定向到百度:
//重定向到百度 Route::rule('baidu','https://www.baidu.com');
五、路由請求型別
請求型別通常有:post、get、delete、put、等請求,路由請求型別可以指定某些請求來請求某個模塊下的某個控制器中的某個方法
//post請求默認模塊/默認控制器/默認方法 Route::rule('good','','post'); Route::post('good',''); //get、delete等請求都與上類似 //設定多個請求型別 Route::rule('good','','post|get|delete|put');
六、路由引數
下表從官方檔案拿下來的一個引數、說明和對應的方法名
| 引數 | 說明 | 方法名 |
|---|---|---|
| method | 請求型別檢測,支持多個請求型別 | method |
| ext | URL后綴檢測,支持匹配多個后綴 | ext |
| deny_ext | URL禁止后綴檢測,支持匹配多個后綴 | denyExt |
| https | 檢測是否https請求 | https |
| domain | 域名檢測 | domain |
| before | 前置行為(檢測) | before |
| after | 后置行為(執行) | after |
| merge_extra_vars | 合并額外引數 | mergeExtraVars |
| complete_match | 是否完整匹配路由 | completeMatch |
| model | 系結模型 | model |
| cache | 請求快取 | cache |
| param_depr | 路由引數分隔符 | depr |
| ajax | Ajax檢測 | ajax |
| pjax | Pjax檢測 | pjax |
| response | 系結response_send行為 | response |
| validate | 系結驗證器類進行資料驗證 | validate |
| header | 設定Response的header資訊 | header |
| append | 追加額外的引數(5.1.5+) |
append |
| middleware | 注冊路由中間件(5.1.6+) |
middleware |
| merge_rule_regex | 合并路由規則(V5.1.6+) |
mergeRuleRegex |
| filter | 請求變數過濾(V5.1.16+) |
filter |
這里舉個路由引數的例子:
Route::rule('good','')
->ext('html')
->https(false);
//ext()設定偽靜態后綴
//https()是否驗證https請求
七、閉包支持
舉個hello world的栗子,這一切的一切都得從“Hello world”說起
//閉包支持 Route::rule('good',function (){ return "Hello world"; });
八、URL生成
配置好路由之后給這個路由一個名字,然后在其它的地方呼叫助手函式url()或者使用門面下的build方法可獲取對應的url地址
Route::rule('good','')->name('new_good');
//通過助手函式的方式獲取url
//url('new_good');
//通過門面下的Url中的build方法
//Url::build('new_good');
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/102142.html
標籤:PHP
