麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > PHP > 正文

php MVC 框架中的路由器(Router)是如何工作的(附

2020-03-22 20:21:16
字體:
來源:轉載
供稿:網友
本篇文章給大家帶來的文章是關于php MVC 框架中的路由器(Router)是如何工作的(附代碼),內容很不錯,有需要的朋友可以參考一下,希望可以幫助到大家。

說明: 貌似 SF 譯文類別出 BUG,所以本文以原創類別給出。

MVC 路由器(Router)或分發器(Dispatcher)會檢測 HTTP 請求的 URL,并嘗試將單個 URL 組件與控制器和控制器中定義的方法匹配,同時將所有參數傳入方法中。

下面給出了一個簡單的路由器類,可以大致闡明路由器是如何工作的。然而在實際項目中,路由器要比下面的示例路由器復雜很多,因為它必須處理更多的東西。

 ?phphtml' target='_blank'>class SimpleRouter // 路由數組,存儲我們定義的路由 private $routes; // 這個方法用于將定義的路由加入到 $routes 數組 function add_route($route, callback $closure) $this- routes[$route] = $closure; // 執行特定的路由 function execute() $path = $_SERVER[ PATH_INFO  * 檢測給定路由是否被定義, * 或者執行默認的 / 首頁路由。 if (array_key_exists($path, $this- route)) { $this- route[$path](); } else { $this- route[ /]();}

SimpleRouter 類是 MVC 路由器的簡化模型。它的主要功能是將用戶定義的每個路由添加到數組中,并執行它。要理解它是如何工作的,請將下面的代碼復制到 index.php 文件中。

 ?php// index.phpclass SimpleRouter // 路由數組,存儲我們定義的路由 private $routes; // 這個方法用于將定義的路由加入到 $routes 數組 function add_route($route, callback $closure) $this- routes[$route] = $closure; // 執行特定的路由 function execute() $path = $_SERVER[ PATH_INFO  * 檢測給定路由是否被定義, * 或者執行默認的 / 首頁路由。 if (array_key_exists($path, $this- route)) { $this- route[$path](); } else { $this- route[ /]();/* 創建 Router 實例 */$router = new SimpleRouter();/* 添加首頁閉包值路由器 */$router- add_route( / , function(){ echo Hello World /* 添加另一個閉包路由 */$router- add_route( /greetings , function(){ echo Greetings, my fellow men. /* 添加可回調函數作為路由 */$router- add_route( /callback , myFunction 
/* 執行路由 */$router- execute();

現在到瀏覽器訪問下列 url:

http://localhost/index.php/http://localhost/index.php/greetingshttp://localhost/index.php/callback

對于每個 url,你應該會看到在我們的路由中定義的不同消息。那么路由器是如何工作的呢?

在我們的示例中,add_route 方法將 url 的路徑名(route)添加到路由數組,并且定義對應的處理操作。這個處理操作可以是一個簡單的函數或者回調函數,作為閉包傳入。現在當我們執行路由器的 execute 方法時,它會檢測在當前 dollar;routes 數組中是否匹配到路由,如果有,則執行這個函數或回調函數。

如果你使用 var_dump 這個 dollar;routes 數組,你可以看到數組的具體內容。對于每個定義的路由都存儲一個閉包與其關聯。

array (size=3) / =  object(Closure)[2] /greetings =  object(Closure)[3] /callback = string myFunction (length=10)

執行處理由以下幾行完成。 dollar;this- routes[$path]** 語句返回一個閉包,該閉包保存在 **/$routes 數組中,用于指定路由的執行,注意語句結尾處的 ()。

$this- routes[$path]();$this- routes[ / ]();

上面的示例簡單地演示了路由器的工作原理,為了簡單起見,我們沒有處理任何錯誤,也沒有考慮路由的安全性問題。

相關推薦:

PHP MVC框架路由學習筆記,mvc框架路由學習筆記

PHP學習MVC框架之路由

以上就是php MVC 框架中的路由器(Router)是如何工作的(附代碼)的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 性爱视频在线免费 | 国产福利视频在线观看 | 国产乱一区二区三区视频 | 亚洲 综合 欧美 动漫 丝袜图 | 成人啪啪18免费网站 | 欧美女同hd | 精品一区二区三区毛片 | 99精品热视频 | 日本成人一二三区 | 国产午夜精品在线 | 亚洲午夜国产 | 成人在线观看污 | av播放在线 | 一本色道久久综合狠狠躁篇适合什么人看 | 成人不卡 | 特级黄色一级毛片 | 午夜视频在线免费播放 | 思思久而久而蕉人 | 亚久久 | 久久亚洲成人网 | 国产成人综合在线观看 | 美女污污视频在线观看 | 人人看人人艹 | 国产精品久久久久久久av三级 | 日韩在线激情 | 色婷婷av一区二区三区久久 | 一本色道久久综合亚洲精品小说 | 7m视频成人精品分类 | 久久久青青草 | 一级外国毛片 | 久久国产精品久久久久久 | 久久久噜噜噜久久熟有声小说 | 久久久久久久久日本理论电影 | 国产一级一国产一级毛片 | 成年免费视频黄网站在线观看 | 一区二区三区播放 | 一区二区三区视频在线观看 | 99成人精品视频 | 欧美激情在线播放 | 午夜小视频免费观看 | 亚洲精品aaaaa |