搜尋
首頁php框架ThinkPHPthinkphp路由是什麼

thinkphp路由是什麼

Dec 27, 2021 am 11:49 AM
thinkphp路由

在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中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
ThinkPHP內置測試框架的關鍵功能是什麼?ThinkPHP內置測試框架的關鍵功能是什麼?Mar 18, 2025 pm 05:01 PM

本文討論了ThinkPHP的內置測試框架,突出了其關鍵功能(例如單元和集成測試),以及它如何通過早期的錯誤檢測和改進的代碼質量來增強應用程序可靠性。

如何使用ThinkPHP來構建實時股票市場數據源?如何使用ThinkPHP來構建實時股票市場數據源?Mar 18, 2025 pm 04:57 PM

文章討論了使用ThinkPHP進行實時股票市場數據提要,重點是設置,數據準確性,優化和安全措施。

在無服務器體系結構中使用ThinkPHP的關鍵注意事項是什麼?在無服務器體系結構中使用ThinkPHP的關鍵注意事項是什麼?Mar 18, 2025 pm 04:54 PM

本文討論了在無服務器體系結構中使用ThinkPHP的關鍵注意事項,專注於性能優化,無狀態設計和安全性。它突出了諸如成本效率和可擴展性之類的收益,但也應對挑戰

如何在ThinkPHP微服務中實現服務發現和負載平衡?如何在ThinkPHP微服務中實現服務發現和負載平衡?Mar 18, 2025 pm 04:51 PM

本文討論了在ThinkPHP微服務中實施服務發現和負載平衡,重點是設置,最佳實踐,集成方法和推薦工具。[159個字符]

ThinkPHP依賴性注入容器的高級功能是什麼?ThinkPHP依賴性注入容器的高級功能是什麼?Mar 18, 2025 pm 04:50 PM

ThinkPHP的IOC容器提供了高級功能,例如懶惰加載,上下文綁定和方法注入PHP App中有效依賴性管理的方法。Character計數:159

如何使用ThinkPHP來構建實時協作工具?如何使用ThinkPHP來構建實時協作工具?Mar 18, 2025 pm 04:49 PM

本文討論了使用ThinkPHP來構建實時協作工具,重點關注設置,Websocket集成和安全性最佳實踐。

使用ThinkPHP來構建SaaS應用程序的主要好處是什麼?使用ThinkPHP來構建SaaS應用程序的主要好處是什麼?Mar 18, 2025 pm 04:46 PM

ThinkPHP具有輕巧的設計,MVC架構和可擴展性。它通過各種功能提高可擴展性,加快開發並提高安全性。

如何使用ThinkPHP和RabbitMQ構建分佈式任務隊列系統?如何使用ThinkPHP和RabbitMQ構建分佈式任務隊列系統?Mar 18, 2025 pm 04:45 PM

本文概述了使用ThinkPhp和RabbitMQ構建分佈式任務隊列系統,重點是安裝,配置,任務管理和可擴展性。關鍵問題包括確保高可用性,避免常見的陷阱,例如不當

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器