thinkphp路由是什麼

青灯夜游
發布: 2021-12-27 11:49:48
原創
4500 人瀏覽過

在thinkphp中,路由是指根據url, 分配到對應的處理程序的對應;其作用是簡化URL存取位址,並根據定義的路由類型做出正確的解析。簡單來說,路由就是一個路徑的解析,根據客戶端提交的路徑,將請求解析到對應的模組或控制器或方法上。

thinkphp路由是什麼

本教學操作環境:Windows7系統、thinkphp v5.1版、Dell G3電腦。

我們來研究ThinkPHP5的路由機制。

雖然說TP5的完全開發手冊上面講路由講的很清楚,但是我們還是在本文研究一下TP5的路由是怎麼一回事,畢竟看博客比看書要舒服一些嘛。

首先,提出三個問題:

1.Route(路由)是什麼?

路由(route)是指根據url, 分配到對應的處理程序的對應。

簡單來說,就是一個路徑的解析,根據客戶端提交的路徑,將請求解析到對應的模組/控制器/方法上。

官方文件裡面是這樣子定義的=>路由的作用是簡化URL存取位址,並根據定義的路由類型做出正確的解析。

手動解釋一下:平常我們按照習慣去訪問我們的ThinkPHP專案的時候,常規的url應該是這樣子寫的,(本地舉例)http:// localhost/專案名稱/public/index.php/模組名稱/控制器名稱/方法名稱

#一串url輸進去之後,就會覺得很絕望,(小聲吐槽)= >「我只是想測試一個小介面讓我打這麼長一串地址、地址太長記不住呀......」。這時候我們就可以用路由去簡化他的位址,並且在縮短位址的同時進行一些規則的定義。

2.為什麼要使用路由?

可能有人會脫口而出:為了簡化路徑呀。當然,這是原因之一,但原因並沒有那麼簡單。

簡化路徑是一個比較大的原因,因為我當初就是覺得路徑太長然後跑過去把路由開起來了,但是後來在使用的過程中,發現Route的作用其實不限於簡化路徑。

我們可以開啟路由的強制使用,讓大家只能從我定義的路由進來,這樣就有一個好處,你在一些不想給用戶訪問的控制器寫了一些腳本,你開啟了完全路由強制使用的話,用戶是訪問不了這些腳本的,否則的話,用戶如果訪問了這些腳本,腳本有時修改數據庫的,那麼就比較危險了。

還有就是我們可以定義好從這個路徑進來是get操作還是post操作,就不會出現以前有種什麼情況,一個控制器的方法,你從get也可以訪問,post也可以訪問,就很雜亂,當然有人會說,get和post都能訪問也沒什麼大不了的吧,其實將這些方法之間區分開來,對於Restful API的思想的體現是比較有幫助的。

同理,http和https的規定我就不說了。

到了這裡,大家是不是覺得路由有些神奇了,原來它可以乾這麼多事情,那我們就來研究一下怎麼去使用它。

Route的使用

使用之前,我們先了解配置信息,還是我的這個叉叉項目,開啟config檔:


#有兩個要注意的地方,先第一個紅框裡面tp預設是給我們開啟了路由這個模式的,第二個紅框,tp預設是關閉掉強制使用路由這一項,什麼意思呢?就是我現在透過我們平常的地址模式存取也可以成功,透過路由存取也可以成功。

我平常做專案的時候為了安全起見是會將這一條改成true的,那麼我們來看一下效果

未開啟強制路由的時候:


依照常規的位址存取是可以成功的,好我們現在開啟強制使用路由:


同樣的位址報錯了,並且拋出了一個路由未找到的錯誤,因為我們未在路由檔案中定義這個路由,所以它拋出了錯誤,說明我們現在強制使用了路由。

那麼我們現在來定義一下它,先從最簡單的一種:


找到route檔


首先我們先要引入一下think下面的路由這個類,然後我們呼叫裡面get靜態方法,從方法名我們可以很容易得知,這是透過get方法去存取的,那麼第一個參數和第二個參數代表什麼呢,第二個參數代表常規url中的模組/控制器/方法,第一個參數代表想要用什麼名稱來取代後面的 模組/控制器/方法。

也就是說,我原本使用http://localhost/xx/public/index.php/xx/test/xx可以存取到我的控制器方法,現在只需要http://localhost/ xx/public/index.php/xx就可以存取到我的控制器方法了。

看一下效果:

成功使用路由訪問,那麼,下一步我們來細究一下這個規則的製定(比如說get和post存取的區別)

我現在將get方法改成post方法然後我在用get方法去訪問看看會發生什麼:



可以看到我們採用了get是無法存取的,只有post才能存取到,怎麼樣,感受到路由好玩的地方了嗎。

深一點的我們還可以這樣子定義路由:

#第三個參數代表訪問的方式,像我這裡面定義的這種形式就是get和post操作都可以存取到,最後一個參數代表的是要不要檢驗https協議,如果是false的話就不會檢驗https,如果是true的話我們用http去訪問的時候就會找不到,這樣子我們就更近一步的保障了我們的介面的安全性。至於效果的話就不示範了。

更多

路由還有什麼特別之處呢?路由甚至可以將get操作傳的參數歸併進url裡面,我們原本的get操作應該是這樣子的:url? id=1,經過路由之後,我們可以把它規定成 url/1,這樣子連id這個參數都被隱藏掉了,好處大家都曉得吧。至於過程的話就上開發手冊上去淘一淘吧。

當然,路由還有一些別的輔助性的小功能,比如說閉包函數呀什麼的,我就不一一介紹了,因為這種輔助性的功能在開發過程中不是很常用,有興趣的話可以去完全開發手冊上面去看。

路由的相關簡介和使用路由的好處就介紹到這裡。

【相關教學推薦:###thinkphp框架###】###

以上是thinkphp路由是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!