自學PHP的第22天---ThinkPHP中的路由、ThinkPHP目錄結構


       這一切的一切都得從“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');


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM