到目前為止已經使用過很多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中加入**:
<?phpview code$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)
);
接下來在controllers中新增乙個檔案:
index.php
<?phpview codeclass
index
public
function
hello()
public
function name($name
)
}
?>
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 ...