本篇文章為大家展示了使用thinkphp5框架實(shí)現(xiàn)路由的原理是什么,內(nèi)容簡明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
成都網(wǎng)絡(luò)公司-成都網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司十載經(jīng)驗(yàn)成就非凡,專業(yè)從事成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),成都網(wǎng)頁設(shè)計(jì),成都網(wǎng)頁制作,軟文發(fā)布平臺(tái),1元廣告等。十載來已成功提供全面的成都網(wǎng)站建設(shè)方案,打造行業(yè)特色的成都網(wǎng)站建設(shè)案例,建站熱線:18980820575,我們期待您的來電!路由理解
概括的說:路由就是網(wǎng)絡(luò)請(qǐng)求的url與thinkphp應(yīng)用層的邏輯處理地址的對(duì)應(yīng)關(guān)系。
通俗的說:路由就是把url的請(qǐng)求優(yōu)雅的對(duì)應(yīng)到你想要執(zhí)行的操作方法。
路由其實(shí)就是把真實(shí)的url地址隱藏起來,使用訪問地址來訪問應(yīng)用(網(wǎng)站或OA等)。
通常這樣定義:“訪問地址”=》“真實(shí)地址”,這代表了一種映射關(guān)系。就好比用“1”代表去肯德基吃飯,用“0”代表去麥當(dāng)勞吃飯,你預(yù)先告知過同事這個(gè)規(guī)則的話,只需要發(fā)送“1”或“0”給同事,同事就能理解要去哪里吃飯,一個(gè)道理。
路由的規(guī)則是thinkphp規(guī)定好的,比如TP的訪問規(guī)則是:根目錄/模塊/控制器/方法,那么我們只需要定義一下映射關(guān)系“reg”=》“index/user/reg”,此時(shí)只需要再瀏覽器輸入“域名/reg”就能訪問“index模塊/user/控制器/reg方法”這個(gè)地址了。
這樣的優(yōu)點(diǎn):
1、沒有處理過的url路徑都是由 ...模塊/控制器/方法/參數(shù) 構(gòu)成,如果不加以“掩飾”的話,會(huì)被別人看清內(nèi)部結(jié)構(gòu),不夠安全。
2、可以讓url地址更加簡潔、優(yōu)雅、美觀。
通常是在應(yīng)用的路由配置文件application/route.php進(jìn)行注冊(cè)。
2種注冊(cè)方式:1路由動(dòng)態(tài)注冊(cè)和2配置定義的方式
配置定義的方式
其中,__pattern__是指定義全局變量規(guī)則,
對(duì)應(yīng)Route.php中:
路由分組
這個(gè)功能允許把相同前綴的路由定義合并分組,
示例一:
admin/Admin/test方法:
public function test() { echo 'i am test <br>'; print_r(input()); }
示例如下(注意接收的參數(shù)):
示例二:
關(guān)于定義路由后,url的生成:url()方法里,url('index/blog/read','id=5&name=thinkphp');
模塊、控制器要寫全,不然會(huì)出錯(cuò)。例如:
Route::group('show', [ 'page/:id' => ['index/Page/show'], 'cate/:id' => ['index/Cate/show'], ], ['method' => 'get'], ['id' => '\d+']);
<a href="{:url('Page/show',['id'=>$cate['id']])}" rel="external nofollow" >
Href生成=》http://cms.com/index/page/show/id/65.html
動(dòng)態(tài)注冊(cè):
Route::rule('路由表達(dá)式','路由地址','請(qǐng)求類型','路由參數(shù)(數(shù)組)','變量規(guī)則(數(shù)組)'); 或者簡化方法: Route:: get(路由規(guī)則, 路由地址, 路由參數(shù), 變量規(guī)則)
批量注冊(cè):
Route::rule([ '路由規(guī)則1'=>'路由地址和參數(shù)', '路由規(guī)則2'=>['路由地址和參數(shù)','路由參數(shù)(數(shù)組)','變量規(guī)則(數(shù)組)'] ... ],'','請(qǐng)求類型','匹配參數(shù)(數(shù)組)','變量規(guī)則');
注意:
混合模式下,注冊(cè)路由后,原來的訪問地址會(huì)自動(dòng)失效~
每個(gè)參數(shù)中以“:”開頭的參數(shù)都表示動(dòng)態(tài)變量,并且會(huì)自動(dòng)綁定到操作方法的對(duì)應(yīng)參數(shù)。
注冊(cè)多個(gè)路由規(guī)則后,系統(tǒng)會(huì)依次遍歷注冊(cè)過的滿足請(qǐng)求類型的路由規(guī)則,一旦匹配到正確的路由規(guī)則后則開始調(diào)用控制器的操作方法,后續(xù)規(guī)則就不再檢測。
路由綁定
入口文件綁定模塊后,再定義路由規(guī)則,就不需要加模塊名稱了。
// [ 應(yīng)用入口文件 ] //綁定admin模塊 define('BIND_MODULE', 'admin');
// 給登錄url定義路由 Route::rule('login', 'Login/index');
注意: define(‘BIND_MODULE', ‘index/index');綁定到控制器時(shí),控制器名稱index要小寫,大寫會(huì)post不成功。。。
關(guān)于路由到動(dòng)態(tài)的模塊、控制器或者操作
'show/:action/:id' => ['index/:action/show', ['method' => 'get'], ['id' => '\d+', 'action' => '\w+']],
這兩個(gè)都能訪問成功??wtf?why?
http://cms.com/show/page/69 http://cms.com/index/page/show/id/69.html
明白一點(diǎn)了,不能這樣寫,可選參數(shù)只能放到路由規(guī)則的最后,如果在中間使用了可選參數(shù)的話,后面的變量都會(huì)變成可選參數(shù)。
上述內(nèi)容就是使用thinkphp5框架實(shí)現(xiàn)路由的原理是什么,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站題目:使用thinkphp5框架實(shí)現(xiàn)路由的原理是什么-創(chuàng)新互聯(lián)
當(dāng)前地址:http://muchs.cn/article10/idgdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、外貿(mào)網(wǎng)站建設(shè)、用戶體驗(yàn)、面包屑導(dǎo)航、虛擬主機(jī)、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容