摘要:功能描述這個路由類本來是我自己框架里的一個核心類文件,因為我想聽聽大家的看法和建議,所以才放出來,如果有什么建議的請直接說把,歡迎吐槽。
功能描述:
這個路由類本來是我自己框架里的一個核心類文件,因為我想聽聽大家的看法和建議,所以才放出來,如果有什么建議的請直接說把,歡迎吐槽。Router.class.php是一個實現url參數打包的php類文件,可用于基于mvc架構設計的項目,本類并未做異常處理,使用者可以自行擴展
參數說明:
$url_mode:url模式,0 動態傳參模式 例如:www.ruanpower.com/index.php?m=home&c=index&a=test&aid=5 1 pathinfo模式 例如:www.ruanpower.com/home/index/test/aid/5
$var_module: 模塊變量名 例如:m、module
$var_controller:控制器變量名 例如:c、controller
$var_action: 方法變量名 例如: a、action
/** * 框架路由類 * * @author mgckid */ class Router { static private $url_mode; static private $var_controller; static private $var_action; static private $var_module; /** * 初始化方法 * @param type $config */ static public function init($config) { self::$url_mode = $config["URL_MODE"]; self::$var_controller = $config["VAR_CONTROLLER"]; self::$var_action = $config["VAR_ACTION"]; self::$var_module = $config["VAR_MODULE"]; } /** * 獲取url打包參數 * @return type */ static public function makeUrl() { switch (self::$url_mode) { //動態url傳參 模式 case 0: return self::getParamByDynamic(); break; //pathinfo 模式 case 1: return self::getParamByPathinfo(); break; } } /** * 獲取參數通過url傳參模式 */ static private function getParamByDynamic() { $arr = empty($_SERVER["QUERY_STRING"]) ? array() : explode("&", $_SERVER["QUERY_STRING"]); $data = array( "module" => "", "controller" => "", "action" => "", "param" => array() ); if (!empty($arr)) { $tmp = array(); $part = array(); foreach ($arr as $v) { $tmp = explode("=", $v); $tmp[1] = isset($tmp[1]) ? trim($tmp[1]) : ""; $part[$tmp[0]] = $tmp[1]; } if (isset($part[self::$var_module])) { $data["module"] = $part[self::$var_module]; unset($part[self::$var_module]); } if (isset($part[self::$var_controller])) { $data["controller"] = $part[self::$var_controller]; unset($part[self::$var_controller]); } if (isset($part[self::$var_action])) { $data["action"] = $part[self::$var_action]; unset($part[self::$var_action]); } switch ($_SERVER["REQUEST_METHOD"]) { case "GET": unset($_GET[self::$var_controller], $_GET[self::$var_action], $_GET[self::$var_module]); $data["param"] = array_merge($part, $_GET); unset($_GET); break; case "POST": unset($_POST[self::$var_controller], $_POST[self::$var_action], $_GET[self::$var_module]); $data["param"] = array_merge($part, $_POST); unset($_POST); break; case "HEAD": break; case "PUT": break; } } return $data; } /** * 獲取參數通過pathinfo模式 */ static private function getParamByPathinfo() { $part = explode("/", trim($_SERVER["REQUEST_URI"], "/")); $data = array( "module" => "", "controller" => "", "action" => "", "param" => array() ); if (!empty($part)) { krsort($part); $data["module"] = array_pop($part); $data["controller"] = array_pop($part); $data["action"] = array_pop($part); ksort($part); $part = array_values($part); $tmp = array(); if (count($part) > 0) { foreach ($part as $k => $v) { if ($k % 2 == 0) { $tmp[$v] = isset($part[$k + 1]) ? $part[$k + 1] : ""; } } } switch ($_SERVER["REQUEST_METHOD"]) { case "GET": unset($_GET[self::$var_controller], $_GET[self::$var_action]); $data["param"] = array_merge($tmp, $_GET); unset($_GET); break; case "POST": unset($_POST[self::$var_controller], $_POST[self::$var_action]); $data["param"] = array_merge($tmp, $_POST); unset($_POST); break; case "HEAD": break; case "PUT": break; } } return $data; }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21114.html
摘要:關于,它使用起來簡單且舒適適用于編寫產品代碼,并能極大的推動開發過程。這里有一些在開發中值得記住的簡單建議最大限度的使用你的文件不要破壞框架核心,不要編輯文件夾中的文件,你可以選擇繼承相關函數來實現。 showImg(https://segmentfault.com/img/remote/1460000018416776?w=808&h=449); 將任何 PHP 框架稱為最好的框架都...
摘要:關于,它使用起來簡單且舒適適用于編寫產品代碼,并能極大的推動開發過程。中我最喜歡的一點是它是使用當下編程中的最佳實踐所構建的。的工作原理是這樣的,對于一個命名為的表,希望該表的模型被命名為。盡量為每一個請求創建。 showImg(https://segmentfault.com/img/remote/1460000018303541?w=808&h=449); 將任何 PHP 框架稱為...
摘要:的現狀目前是版本,是基于開發。入口文件啟動文件和配置文件框架的入口文件是。在路由中指定控制器類必須寫全命名空間,不然會提示找不到類。目前支持四種數據庫系統以及。使用時發生錯誤,因為在文件中,的默認驅動是。 最近使用 Lumen 做了 2 個業余項目,特此記錄和分享一下。 Lumen 的介紹 在使用一項新的技術時,了解其應用場景是首要的事情。 Lumen 的口號:為速度而生的 La...
摘要:今天我在這里給大家分享一下在中如何創建數據模型和基于的搭建。對象與數據庫的關系通常在電腦的世界里創建的數據模型會轉換為數據庫里的一條條記錄。 Symfony是一款優秀的基于MVC架構的PHP框架。今天我在這里給大家分享一下在Symfony中如何創建數據模型和基于RESTful api的搭建。重點是如何創建數據模型哦! 本教程使用的當前Symfony的LTS版本(Symfony 2.8...
摘要:如何構建一個自己的框架為什么我們要去構建一個自己的框架可能絕大多數的人都會說市面上已經那么多的框架了,還造什么輪子。 showImg(https://segmentfault.com/img/bVNg9F?w=500&h=500); 如何構建一個自己的PHP框架 為什么我們要去構建一個自己的PHP框架?可能絕大多數的人都會說市面上已經那么多的框架了,還造什么輪子?。我的觀點造輪子不是目...
閱讀 1760·2023-04-26 00:20
閱讀 1804·2021-11-08 13:21
閱讀 1930·2021-09-10 10:51
閱讀 1557·2021-09-10 10:50
閱讀 3249·2019-08-30 15:54
閱讀 2131·2019-08-30 14:22
閱讀 1429·2019-08-29 16:10
閱讀 3089·2019-08-26 11:50