欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

thinkphp5框架路由原理與用法詳解

 更新時(shí)間:2020年02月11日 13:06:44   作者:Karagrade  
這篇文章主要介紹了thinkphp5框架路由原理與用法,結(jié)合圖文與實(shí)例形式詳細(xì)分析了thinkPHP5框架路由的相關(guān)原理、使用方法及操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了thinkphp5框架路由原理與用法。分享給大家供大家參考,具體如下:

路由理解

概括的說(shuō):路由就是網(wǎng)絡(luò)請(qǐng)求的url與thinkphp應(yīng)用層的邏輯處理地址的對(duì)應(yīng)關(guān)系。
通俗的說(shuō):路由就是把url的請(qǐng)求優(yōu)雅的對(duì)應(yīng)到你想要執(zhí)行的操作方法。

路由其實(shí)就是把真實(shí)的url地址隱藏起來(lái),使用訪問(wèn)地址來(lái)訪問(wèn)應(yīng)用(網(wǎng)站或OA等)。

通常這樣定義:“訪問(wèn)地址”=》“真實(shí)地址”,這代表了一種映射關(guān)系。就好比用“1”代表去肯德基吃飯,用“0”代表去麥當(dāng)勞吃飯,你預(yù)先告知過(guò)同事這個(gè)規(guī)則的話,只需要發(fā)送“1”或“0”給同事,同事就能理解要去哪里吃飯,一個(gè)道理。

路由的規(guī)則是thinkphp規(guī)定好的,比如TP的訪問(wèn)規(guī)則是:根目錄/模塊/控制器/方法,那么我們只需要定義一下映射關(guān)系“reg”=》“index/user/reg”,此時(shí)只需要再瀏覽器輸入“域名/reg”就能訪問(wèn)“index模塊/user/控制器/reg方法”這個(gè)地址了。

這樣的優(yōu)點(diǎn):

1、沒(méi)有處理過(guò)的url路徑都是由 ...模塊/控制器/方法/參數(shù) 構(gòu)成,如果不加以“掩飾”的話,會(huì)被別人看清內(nèi)部結(jié)構(gòu),不夠安全。
2、可以讓url地址更加簡(jiǎn)潔、優(yōu)雅、美觀。

定義

通常是在應(yīng)用的路由配置文件application/route.php進(jìn)行注冊(cè)。
在這里插入圖片描述

注冊(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ù)組)');
或者簡(jiǎn)化方法:
Route:: get(路由規(guī)則, 路由地址, 路由參數(shù), 變量規(guī)則)

批量注冊(cè):

Route::rule([
'路由規(guī)則1'=>'路由地址和參數(shù)',
'路由規(guī)則2'=>['路由地址和參數(shù)','路由參數(shù)(數(shù)組)','變量規(guī)則(數(shù)組)']
...
],'','請(qǐng)求類型','匹配參數(shù)(數(shù)組)','變量規(guī)則');

注意:

  • 混合模式下,注冊(cè)路由后,原來(lái)的訪問(wèn)地址會(huì)自動(dòng)失效~

  • 每個(gè)參數(shù)中以“:”開頭的參數(shù)都表示動(dòng)態(tài)變量,并且會(huì)自動(dòng)綁定到操作方法的對(duì)應(yīng)參數(shù)。

  • 注冊(cè)多個(gè)路由規(guī)則后,系統(tǒng)會(huì)依次遍歷注冊(cè)過(guò)的滿足請(qǐng)求類型的路由規(guī)則,一旦匹配到正確的路由規(guī)則后則開始調(diào)用控制器的操作方法,后續(xù)規(guī)則就不再檢測(cè)。

路由綁定
入口文件綁定模塊后,再定義路由規(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è)都能訪問(wèn)成功??wtf?why?

http://cms.com/show/page/69
http://cms.com/index/page/show/id/69.html

明白一點(diǎn)了,不能這樣寫,可選參數(shù)只能放到路由規(guī)則的最后,如果在中間使用了可選參數(shù)的話,后面的變量都會(huì)變成可選參數(shù)。
路由別名
似乎使用路由別名后,原pathinfo并不會(huì)失效~

小結(jié)

  • url()助手函數(shù)里,模塊/控制器/方法要寫全;

更多關(guān)于thinkPHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結(jié)》、《ThinkPHP常用方法總結(jié)》、《codeigniter入門教程》、《CI(CodeIgniter)框架進(jìn)階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術(shù)總結(jié)》。

希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • php中hashtable實(shí)現(xiàn)示例分享

    php中hashtable實(shí)現(xiàn)示例分享

    對(duì)php內(nèi)核有一定了解的人應(yīng)該都知道php的精髓就是HashTable,這篇文章主要介紹了php中hashtable實(shí)現(xiàn)示例,需要的朋友可以參考下
    2014-02-02
  • php使用json_encode對(duì)變量json編碼

    php使用json_encode對(duì)變量json編碼

    這篇文章主要是說(shuō)明 json_encode 使用時(shí)一個(gè)需要注意的細(xì)節(jié),無(wú)論返回的是數(shù)組還是 json,都不代表這一定就是個(gè)錯(cuò)誤的返回結(jié)果,當(dāng)前端需要的數(shù)組時(shí),數(shù)組就是正確的結(jié)果,反之亦然
    2014-04-04
  • Zend Framework動(dòng)作控制器用法示例

    Zend Framework動(dòng)作控制器用法示例

    這篇文章主要介紹了Zend Framework動(dòng)作控制器用法,結(jié)合實(shí)例形式分析了動(dòng)作控制器的功能、使用步驟、相關(guān)技巧與注意事項(xiàng),需要的朋友可以參考下
    2016-12-12
  • PHP中如何判斷exec函數(shù)執(zhí)行成功?

    PHP中如何判斷exec函數(shù)執(zhí)行成功?

    在PHP日常開發(fā)中有時(shí)候會(huì)要判斷exec函數(shù)是否執(zhí)行成功了呢?那如何判斷呢?下面跟著小編一起通過(guò)本文來(lái)學(xué)習(xí)學(xué)習(xí)。
    2016-08-08
  • php微信授權(quán)登錄實(shí)例講解

    php微信授權(quán)登錄實(shí)例講解

    這篇文章主要介紹了php微信授權(quán)登錄實(shí)例講解,微信授權(quán)登錄是比較常用的功能,有需要的同學(xué)可以研究下
    2021-03-03
  • thinkPHP通用控制器實(shí)現(xiàn)方法示例

    thinkPHP通用控制器實(shí)現(xiàn)方法示例

    這篇文章主要介紹了thinkPHP通用控制器實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了thinkPHP針對(duì)數(shù)據(jù)庫(kù)的基本CURD操作方法的封裝實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-11-11
  • php zip文件解壓類代碼

    php zip文件解壓類代碼

    用php實(shí)現(xiàn)對(duì)zip文件的解壓代碼。
    2009-12-12
  • 有道搜索和IP138的IP的API接口(PHP應(yīng)用)

    有道搜索和IP138的IP的API接口(PHP應(yīng)用)

    原理就是通過(guò)php模擬瀏覽器獲取ip地址歸屬地,需要的朋友可以參考下
    2012-11-11
  • php+html5實(shí)現(xiàn)無(wú)刷新圖片上傳教程

    php+html5實(shí)現(xiàn)無(wú)刷新圖片上傳教程

    這篇文章主要為大家介紹了php+html5實(shí)現(xiàn)無(wú)刷新圖片上傳教程,一種全新的上傳圖片的方式,利用html5的FileReader讀取圖片文件,感興趣的小伙伴們可以參考一下
    2016-01-01
  • php多文件打包下載的實(shí)例代碼

    php多文件打包下載的實(shí)例代碼

    本篇文章主要介紹了php多文件打包下載的實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07

最新評(píng)論