mvc框架路由原理

2022-09-14 12:00:12 字數 1697 閱讀 4528

到目前為止已經使用過很多php框架,比如:zendframework,thinkphp,yii,slim。但還未靜下心來研究過框架的原理。

今天首先來看一下mvc框架中路由的原理:

所謂路由,就是程式根據瀏覽器上的url來進行程式分發處理(跳轉)的功能**。

我們使用框架的時候會發現一般的url請求是這樣的:localhost/user/login/1 ,在這個url中我們不難發現:user為控制器的名字,而login為當前的控制器方法名,1為傳入的引數(可能為使用者類別)。

下面我們來實踐一下路由:

建立一般mvc框架的目錄結構如下:

----controllers

----models

----views

--library     //引入庫或通用方法

--public

----config

------config.php

----index.php           //入口檔案

----.htaccess

路由的原理:程式用$_server獲取url上的請求引數,獲取相應位置的引數,然後載入相應的控制器方法並執行。

乙個簡單的例子:

public中的index.php中加入**:

<?php 

$root = $_server['script_name'];

$request = $_server['request_uri'];

$uri = array

();

$url = trim(str_replace($root, 」, $request), 『/』); #

如果為空,則是訪問根位址

if (empty($url

))

else

else

}

#載入對應的類檔案 #

例項化

$classname = ucfirst($class

);$obj = new

$classname

();

call_user_func_array( //

參見前一篇文章

#呼叫內部function

array($obj,$func),

#傳遞引數

array_slice($uri, 2)

);

view code

接下來在controllers中新增乙個檔案:

index.php

<?php 

class

index

public

function

hello()

public

function name($name

)

}

?>

view code

ok.下面我們可以測試下。

瀏覽器中輸入:localhost/index/index   頁面輸出:i am default controller

瀏覽器中輸入:localhost/index/hello頁面輸出:hello word!

瀏覽器中輸入:localhost/index/name/jack 頁面輸出:hello jack 

這樣就實現了簡單的路由。

MVC框架之路由機制

mvc路由作用 解析url的作用,將使用者輸入的url位址中的 控制器名稱 和 action 名稱解析出來,尋找相應的頁面顯示給使用者。1 註冊路由,將新建的route物件新增到routetable物件中,routetable物件用於儲存所有的路由規則。2 執行路由選擇 public static ...

MVC路由器原理

目錄 1 什麼是路由 2 路由的註冊 3 url的模式匹配 4 由url到控制器 舉例什麼是路由?假如你在上大學的時候,睡覺起晚了,醒來後發現宿舍同學都 了,你想到上午還有課,但是不記得去哪個教室去上了,這時候你會查下課程表,然後就知道去哪個教室上課了。這個課程表就是你的路由。網路中的路由器,路由器...

C WEB專案MVC框架原理及約定

1 mvc原理圖 2 mvc專案資料夾說明 3 mvc中的約定 檢視訪問和定址規則 1 在控制器中使用view 方法呼叫檢視,返回和 動作方法同名 的檢視 2 定址規則 view 方法預設從 view資料夾 下尋找和控制器同名的資料夾 mvc中的約定 1 控制器 必須以controller結尾 2 ...