在thinkphp中,路由是指根據url, 分配到對應的處理程序的對應;其作用是簡化URL存取位址,並根據定義的路由類型做出正確的解析。簡單來說,路由就是一個路徑的解析,根據客戶端提交的路徑,將請求解析到對應的模組或控制器或方法上。
本教學操作環境:Windows7系統、thinkphp v5.1版、Dell G3電腦。
我們來研究ThinkPHP5的路由機制。
雖然說TP5的完全開發手冊上面講路由講的很清楚,但是我們還是在本文研究一下TP5的路由是怎麼一回事,畢竟看博客比看書要舒服一些嘛。
首先,提出三個問題:
路由(route)是指根據url, 分配到對應的處理程序的對應。
簡單來說,就是一個路徑的解析,根據客戶端提交的路徑,將請求解析到對應的模組/控制器/方法上。
官方文件裡面是這樣子定義的=>路由的作用是簡化URL存取位址,並根據定義的路由類型做出正確的解析。
手動解釋一下:平常我們按照習慣去訪問我們的ThinkPHP專案的時候,常規的url應該是這樣子寫的,(本地舉例)http:// localhost/專案名稱/public/index.php/模組名稱/控制器名稱/方法名稱
#一串url輸進去之後,就會覺得很絕望,(小聲吐槽)= >「我只是想測試一個小介面讓我打這麼長一串地址、地址太長記不住呀......」。這時候我們就可以用路由去簡化他的位址,並且在縮短位址的同時進行一些規則的定義。
可能有人會脫口而出:為了簡化路徑呀。 當然,這是原因之一,但原因並沒有那麼簡單。
簡化路徑是一個比較大的原因,因為我當初就是覺得路徑太長然後跑過去把路由開起來了,但是後來在使用的過程中,發現Route的作用其實不限於簡化路徑。
我們可以開啟路由的強制使用,讓大家只能從我定義的路由進來,這樣就有一個好處,你在一些不想給用戶訪問的控制器寫了一些腳本,你開啟了完全路由強制使用的話,用戶是訪問不了這些腳本的,否則的話,用戶如果訪問了這些腳本,腳本有時修改數據庫的,那麼就比較危險了。
還有就是我們可以定義好從這個路徑進來是get操作還是post操作,就不會出現以前有種什麼情況,一個控制器的方法,你從get也可以訪問,post也可以訪問,就很雜亂,當然有人會說,get和post都能訪問也沒什麼大不了的吧,其實將這些方法之間區分開來,對於Restful API的思想的體現是比較有幫助的。
同理,http和https的規定我就不說了。
到了這裡,大家是不是覺得路由有些神奇了,原來它可以乾這麼多事情,那我們就來研究一下怎麼去使用它。
使用之前,我們先了解配置信息,還是我的這個叉叉項目,開啟config檔:
#有兩個要注意的地方,先第一個紅框裡面tp預設是給我們開啟了路由這個模式的,第二個紅框,tp預設是關閉掉強制使用路由這一項,什麼意思呢?就是我現在透過我們平常的地址模式存取也可以成功,透過路由存取也可以成功。
我平常做專案的時候為了安全起見是會將這一條改成true的,那麼我們來看一下效果
未開啟強制路由的時候:
依照常規的位址存取是可以成功的,好我們現在開啟強制使用路由:
同樣的位址報錯了,並且拋出了一個路由未找到的錯誤,因為我們未在路由檔案中定義這個路由,所以它拋出了錯誤,說明我們現在強制使用了路由。
那麼我們現在來定義一下它,先從最簡單的一種:
找到route檔
看一下效果:
我現在將get方法改成post方法然後我在用get方法去訪問看看會發生什麼:
深一點的我們還可以這樣子定義路由:
以上是thinkphp路由是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!