1. 程式人生 > >Tp5.0路由

Tp5.0路由

路由作用

1.根據實現定義的路由規則,檢驗URL請求,確定執行或者拒絕;
2.路由規則可自定義,隱藏了原URL地址,使訪問地址,使訪問更安全,地址更優雅。

路由模式

開啟路由後,其實只有二中狀態,要麼全部URL請求都採用路由訪問,要麼是有路由規則的用路由訪問,沒有的還是按照PATH_INFO規則訪問。

1.普通模式

配置:'url_route_on=>false

訪問:全部採用PATH_INFO格式

2.混合模式

配置:'url_route_on'=>true,'url_route_must'=>false,

已註冊用路由訪問,為註冊仍用PATH_INFO訪問

3.強制模式

配置:'url_route_on'=>true,'url_rote_must'=>false,

全部訪問必須採用路由模式,包括首頁'/'

路由註冊

1.動態方法:

Route:rule('路由規則','路由地址','請求型別',[路由引數],[變數規則]);

2.配置陣列(配置檔案方式):

return [

'路由規則'=>'路由地址',

'路由規則'=>['路由地址',[路由引數],[變數規則]]

];

路由規則

路由規則就是使用者最終用來訪問的URL地址,並非原始URL地址;

路由識別符號/:變數名1/:變數名2/:[:可選變數名]

路由地址

路由地址,是使用者最終要訪問的URL,也是路由規則的目標,它不像路由規則,可以通過路由引數和變數規則進行檢驗,所以使用者一定要確保路由地址的有效性。

1.路由地址

路由地址,就是使用者用路由規則訪問頁面時,真實跳轉到的地址;

2.路由地址的種類

1)路由到:模組/控制器/操作;

基本語法:Route::rule('路由規則','模組/控制器/操作');

重點理解:

可訪問控制器:'url_controller_layer'=>'controller',

按從右到左的順序進行地址解析:操作->控制器->模組,

支援額外引數(查詢方式):?變數名1=值1&變數名2=值2..

2)路由到:操作方法;

基本語法:Route::rule('路由規則','@模組/控制器/操作');

重點理解:

跳過模組初始化,直接執行控制器中的方法;

模組初始化:配置檔案和公共檔案;

呼叫試圖時必須設定完整模版檔案的路徑。

3)路由到:類的方法(動態與靜態)

基本語法:

Route::rule('路由規則','\完整名稱空間\類名@動態操作');

Route::rule('路由規則','\完整名稱空間\類名::靜態操作');

重點理解:

類必須建立在應用目錄或子目錄中;

靜態方法支援外部動態訪問,但建議在語法上分開;

為了專案規範,除非不得已,否者儘可能少用。

4)路由到:重定向地址(301)

基本語法:Route::rule('路由規則','重定向地址');

重點理解:

重定向地址:'/'或者'http://'開頭的外部地址;

'/':是以當前可訪問的Web目錄開始:如'public';

外部地址是301跳轉,適用與網站遷移。

5)路由到:閉包函式

基本語法:

Route::rule('路由規則',function([引數]){

//閉包函式

});

重點理解:

閉包即使函式中的函式,或方法中的方法;

閉包函式可以接受通過路由規則傳過來的引數;

不再執行任何操作,相當於把方法直接定義在引數中。

路由引數

路由引數是用來檢測路由地址的,準確的講,是用來校驗除了路由變數之外額所有內容。

1.路由引數

路由引數是用來驗證當前的路由規則是否有效的重要依據;

2.路由引數的種類

1)請求型別:['method'=>'get|post'];

請求型別:最常用的是GET和POST,其它瞭解即可(如delete,put等);

使用方法:

如註冊方法已生命型別則無設定:Route::get()/post();

Route::rule()/any():['method'=>'get|post'];

使用路由配置檔案陣列定義:['method'=>'get|post'];

2)URL字尾:['ext'=>'html|shtml']/['deny_ext'=>'php'];

限定可訪問路由規則的URL字尾名稱,預設為html;

使用方法:

允許的URL字尾:['ext'=>'html|shtml'];

禁止的URL字尾:['deny_ext'=>'jpg|png'];

允許URL字尾為空:['ext'=>''];

禁止的URL字尾為空:['deny_ext'=>''];

3)回撥函式:['callback'=>'tp5.com'];

說明:回撥函式返回true則路由規則有效,否者無效;

使用方法:

回撥函式寫在應用公共方法中:common.php;

語法:['callback'=>'回撥函式名稱'];

例如:用回撥函式檢測是否存在某個應用配置項,來決定是否執行路由規則。

4)域名檢測:['domain'=>'tp5.com'];

說明:檢測呼叫當前路由規則的域名是不是引數所指定的域名;

使用方法:

語法格式:['domain'=>'域名'];

支援子域名:['domain'=>'域名'];

5)更多引數,如繫結模組/合併額外引數等請查閱手冊。

變數規則

1.路由變數規則:

用來對動態路由規則中的變數部分,進行校驗的依據。

2.變數規則的使用域:

1 )區域性變數規則:僅對當前路由有效

Route::rule('路由規則','路由地址','請求型別',['路由引數'],['變數規則']);

變臉規則:['動態變數1'=>'正則表示式1','動態變數2'=>'正則表示式2'];

例如:Route::rule('demo','index/demo','GET',[],['id'=>'\d{4}']);

2)全域性變數規則:已註冊的全部路由規則都要遵守

單獨建立:Route::pattern('變數名','正則表示式');

批量建立:

Route::pattern([

'變數名1'=>'正則表示式1',

'變數名2'=>'正則表示式2',

]);

路由變數規則和路由規則可以寫在一起,以陣列的形式。

3..正則表示式

描述字串匹配模式,主要用於字串的查詢/替換與分割;

4.正則表示式有幾部分組成

四部分組成:定界符,院子,元字元和修正符。

定界符:通常用#,~~,/等非原子或元字元反斜槓\都行。

原子:需要匹配的字元,由可見與不可見字元組成;

元字元:限定或修飾原子部分,不能單獨使用;

修正符:限定或修飾整個正則表示式。

變數的規則是路由中的一個重點,也是保證路由規則安全的重要手段,當全域性與區域性的變數規則作用在同一個路由變數上面時,區域性規則覆蓋全域性規則,即區域性的優先順序高於全域性。

路由分組

路由分組,看上去很直觀,其實很抽象,它的高效雲信,依賴於專案前期的科學規劃。

1.什麼情況下,適合進行路由分組?

當多個路由規則中,由相同的路由字首時,分組可以可以提高效率。

2.分組方法

動態方法:Route::group('分組名稱',[路由地址,[路由引數],[變數規則]]);

配置陣列:return['規則'=>[路由地址,[路由引數],[變數規則]];

1)路由引數分類

閉包分組:

Route::group('',function(){

//建立路由規則語句

})

虛擬分組:根據相同路由引數進行分組

別名路由

1.快速註冊同一控制器下所有操作方法(不支援變數規則)

動態方法:Route::alias('規則名稱','模組/控制器',[路由引數]);

靜態陣列:

return[

'alias'=>['規則名稱','模組/控制器',[路由引數]],

];

別名路由,可以進一步簡化路由規則,但是不支援變數規則,僅僅是縮短URL地址,使用請求地址更壞短小優雅。藉助路由引數中的allow和except引數實現黑白名單功能,比較有實際意義。

路由繫結

1.入口繫結

在入口檔案中更新增:BIND_MODULE系統常量

//將當前訪問繫結模組/控制器

define('BIND_MODULE','index');//模組級

define('BIND_MODULE','index/demo');//控制器級

2.入口自動繫結

入口檔名與應用中的模組自動繫結

1)入口自動繫結模組設定:'auto_bind_module'=>true,

2)建立需要繫結的入口檔案:列如:admin.php

3)建立與入口檔案對應的模組與控制器:application/admin/controller/Index.php,並建立預設index()方法

4)直接訪問:域名/admin.php,就會自動執行admin模組中預設控制器中的預設方法

3.動態繫結

語法:Route::bind('模組[/控制器][/操作]');

1)綁定當前的URL到模組

Route::bind('模組]');

2)綁定當前的URL到模組下面的控制器

Route::bind('模組/控制器');

3)綁定當前的URL到模組下面的控制器中的指定操作

Route::bind('模組/控制器/操作');

4.繫結到名稱空間或者類

1)綁定當前的URL到指定名稱空間

Route::bind('app\index\controller','')

2)綁定當前的URL到類

ThinkPHP5路由(原文地址

結束。

相關推薦

Tp5.0路由

路由作用1.根據實現定義的路由規則,檢驗URL請求,確定執行或者拒絕;2.路由規則可自定義,隱藏了原URL地址,使訪問地址,使訪問更安全,地址更優雅。路由模式開啟路由後,其實只有二中狀態,要麼全部URL請求都採用路由訪問,要麼是有路由規則的用路由訪問,沒有的還是按照PATH_

TP5.0路由和URL

上一篇文章介紹了tp5.0的目錄架構和資料庫的簡單操作。關於資料庫操作這方面我會在其他文章詳細介紹。這篇文章我們主要談一下路由和url。 首先我們要知道ThinkPHP採用單一入口模式訪問應用,對應用的所有請求都定向到應用的入口檔案,系統會從URL引數

tp5.0定義路由 +隱藏介面url地址

php public function api(){       return view();     }     public function manage($id){  

TP5.0.20路由不生效

環境:Windows 10,Apache 2.4,PHP 5.6TS 定義了好幾條路由規則都不生效,經過排查後發現是.htaccess中的規則有誤 解決 <IfModule

TP5.0學習筆記---URL和路由篇》

入口檔案 我們都知道thinkphp是一個單入口框架,它所有的請求都通過public/index.php進入,之後通過攜帶不同的引數,轉發到相應的控制器中來實現不同的功能。 單入口檔案:應用程式的所有http請求都由某一個檔案接受並由這個檔案轉發到功能程式碼中 單入口優勢

tp5.0隱藏訪問路由裡面的index.php

官方預設的 .htaccess檔案<IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-

vue2.0 路由知識一

應該 tag cnblogs hist com clas ons -s doctype <!DOCTYPE html> <html> <head> <meta charset="UTF-8">

tp5.0 學習(一):虛擬環境安裝

安裝php admin cat code logs exe erro ron log 一、文件目錄: application: 應用目錄,開發文件存放地 extend:擴展 public:入口文件 thinkphp:核心代碼 vendor:第三方類庫 二、域名Apache配

TP5.0 session

pre keyword str 註冊 用戶註冊 string 5.0 key 保存 在用戶註冊的時候保存session: Session::set(‘name‘,‘thinkphp‘); Session::set(‘name‘,‘thinkphp‘,‘think‘);第一個

vue2.0路由經典介紹

spa 導航 link code 鍵值對 包含 組件 pri query 聲明式 <router-link :to="...">編程式router.push(...) router.push(‘home‘) // 字符串 rout

tp5.0整合七牛雲圖片上傳

分享 http 沒有 ger cti str get res 文件名 這裏以上傳圖片為例 上傳其他文件也是大同小異 使用composer安裝gmars/tp5-qiniu 安裝成功則在vendor目錄下多出一個目錄 這個目錄含有整合七牛雲的所有類包等文件 控制器中添加up

TP5.0 mysql 使用函數時 怎樣用數組的方式來查詢

comm 表達式 字段 stat name 例子 ref www. where 今天在查詢數據的時候 遇到一個小問題 就是在用TP5.0的時候 查詢數據的時候需要用到一個函數 FIND_IN_SET 對於這個函數的用處 就是 首先舉個例子來說: 有個文章表裏面有個ty

vue2.0路由進階

兩種 api 標簽 vue new 模式 pat pla 一個 一、路由的模式   第一種用history方式實現,HTML5使用window.history.pushState()實現路由的切換而不刷新頁面。   第二種使用hash值的方式來實現。   vue2.0兩種都

tp5.0清除緩沖

$path control rmdir code clear cti nds func ear namespace app\admin\controller;use think\Cache;class Caches extends Base{public function

tp5.0行為的用法,可以存入json數據,方便讀取數據。

用法 是我 () func 命名空間 init json數據 json one 1.首先新建個文件夾命名為behavior;2.在文件夾下面新建一個類,如Auth類;3 . 定義命名空間<?php namespace app\admin\behavior;//Conf

vue 2.0 路由切換以及組件緩存源代碼重點難點分析

基於 代碼實現 而是 答案 html fine 傳遞參數 並且 等等 關於vue 2.0源代碼分析,已經有不少文檔分析功能代碼段比如watcher,history,vnode等,但沒有一個是分析重點難點的,沒有一個是分析大命題的,比如執行router.push之後到底是如何

tp5.0中及其常用方法的一些函數方法(自己看)和技巧(不斷添加中)

pro xtend yml 數據庫操作 apach txt 圖標 index run 1.目錄結構 2.路由 3..控制器 4.模型寫法 5.視圖標簽 6.數據庫操作 7.表單驗證 --------------------------- 1.目錄結構

vue2.0路由-適合剛接觸新手簡單理解

outer html 路徑和 簡單 add 配置 訪問 rip one vue路由:vue-router vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,適合用於構建單頁面應用。vue的單頁面應用是基於路由和組件的,路由用於設定訪問路徑,並將

TP5.0中使用trace調試

error conf 使用 配置 文件 技術 bubuko onf 我們 1.在項目 的配置文件config.php 配置, 2.在程序中使用trace: 3.在瀏覽器網頁上打開 得到如下圖所示:點擊 “用戶變量”,即可查看使用trace輸出的變量 或

Django2.0路由層-URLconf

不能 開頭 功能 匹配模式 tail 順序 git 整數 IE DJango2.0路由層-URLconf URL配置(URLconf)就像Django 所支撐網站的目錄樹。 它的本質是URL與要為該URL調用的視圖函數之間的映射表; 對於客戶端發來的某個URL調用哪一段