當前位置: 首頁>>代碼示例>>PHP>>正文


PHP Dispatcher::useRoute方法代碼示例

本文整理匯總了PHP中Dispatcher::useRoute方法的典型用法代碼示例。如果您正苦於以下問題:PHP Dispatcher::useRoute方法的具體用法?PHP Dispatcher::useRoute怎麽用?PHP Dispatcher::useRoute使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在Dispatcher的用法示例。


在下文中一共展示了Dispatcher::useRoute方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的PHP代碼示例。

示例1: routerCheck

 private static function routerCheck()
 {
     if (file_exists_case(CONFIG_PATH . 'routes.php')) {
         $routes = (include CONFIG_PATH . 'routes.php');
         if (!is_array($routes)) {
             $routes = $_routes;
         }
         if (isset($_GET[C('VAR_ROUTER')])) {
             $routeName = $_GET[C('VAR_ROUTER')];
             unset($_GET[C('VAR_ROUTER')]);
         } else {
             $paths = explode(C('PATH_DEPR'), trim($_SERVER['PATH_INFO'], '/'));
             $routeName = array_shift($paths);
         }
         if (isset($routes[$routeName])) {
             $route = $routes[$routeName];
             $_GET[C('VAR_MODULE')] = $route[0];
             $_GET[C('VAR_ACTION')] = $route[1];
             if (!isset($_GET[C('VAR_ROUTER')])) {
                 $vars = explode(',', $route[2]);
                 for ($i = 0; $i < count($vars); $i++) {
                     $_GET[$vars[$i]] = array_shift($paths);
                 }
                 $res = preg_replace('@(\\w+)\\/([^,\\/]+)@e', '$_GET[\'\\1\']="\\2";', implode('/', $paths));
             }
             if (isset($route[3])) {
                 parse_str($route[3], $params);
                 $_GET = array_merge($_GET, $params);
             }
             unset($_SERVER['PATH_INFO']);
         } elseif (isset($routes[$routeName . '@'])) {
             $routeItem = $routes[$routeName . '@'];
             $regx = str_replace($routeName, '', trim($_SERVER['PATH_INFO'], '/'));
             foreach ($routeItem as $route) {
                 $rule = $route[0];
                 if (preg_match($rule, $regx, $matches)) {
                     $_GET[C('VAR_MODULE')] = $route[1];
                     $_GET[C('VAR_ACTION')] = $route[2];
                     if (!isset($_GET[C('VAR_ROUTER')])) {
                         $vars = explode(',', $route[3]);
                         for ($i = 0; $i < count($vars); $i++) {
                             $_GET[$vars[$i]] = $matches[$i + 1];
                         }
                         $res = preg_replace('@(\\w+)\\/([^,\\/]+)@e', '$_GET[\'\\1\']="\\2";', str_replace($matches[0], '', $regx));
                     }
                     if (isset($route[4])) {
                         parse_str($route[4], $params);
                         $_GET = array_merge($_GET, $params);
                     }
                     //unset($_SERVER['PATH_INFO']);
                     self::$useRoute = true;
                     break;
                 }
             }
         }
     }
 }
開發者ID:BGCX067,項目名稱:fakebook-svn-to-git,代碼行數:57,代碼來源:Dispatcher.class.php

示例2: routerCheck

 /**
 +----------------------------------------------------------
 * 路由檢測
 +----------------------------------------------------------
 * @access private 
 +----------------------------------------------------------
 * @return void
 +----------------------------------------------------------
 */
 private static function routerCheck()
 {
     // 搜索路由映射 把路由名稱解析為對應的模塊和操作
     if (file_exists(CONFIG_PATH . 'routes.php')) {
         $routes = (include CONFIG_PATH . 'routes.php');
         if (!is_array($routes)) {
             $routes = $_routes;
         }
         if (isset($_GET[C('VAR_ROUTER')])) {
             // 存在路由變量
             $routeName = $_GET[C('VAR_ROUTER')];
         } else {
             $paths = explode(C('PATH_DEPR'), trim($_SERVER['PATH_INFO'], '/'));
             // 獲取路由名稱
             $routeName = array_shift($paths);
         }
         if (isset($routes[$routeName])) {
             // 讀取當前路由名稱的路由規則
             // 路由定義格式 routeName=>array(‘模塊名稱’,’操作名稱’,’參數定義’,’額外參數’)
             $route = $routes[$routeName];
             $_GET[C('VAR_MODULE')] = $route[0];
             $_GET[C('VAR_ACTION')] = $route[1];
             //	獲取當前路由參數對應的變量
             if (!isset($_GET[C('VAR_ROUTER')])) {
                 $vars = explode(',', $route[2]);
                 for ($i = 0; $i < count($vars); $i++) {
                     $_GET[$vars[$i]] = array_shift($paths);
                 }
                 // 解析剩餘的URL參數
                 $res = preg_replace('@(\\w+)\\/([^,\\/]+)@e', '$_GET[\'\\1\']="\\2";', implode('/', $paths));
             }
             if (isset($route[3])) {
                 // 路由裏麵本身包含固定參數 形式為 a=111&b=222
                 parse_str($route[3], $params);
                 $_GET = array_merge($_GET, $params);
             }
             unset($_SERVER['PATH_INFO']);
         } elseif (isset($routes[$routeName . '@'])) {
             // 存在泛路由
             // 路由定義格式 routeName@=>array(
             // array('路由正則1',‘模塊名稱’,’操作名稱’,’參數定義’,’額外參數’),
             // array('路由正則2',‘模塊名稱’,’操作名稱’,’參數定義’,’額外參數’),
             // ...)
             $routeItem = $routes[$routeName . '@'];
             $regx = str_replace($routeName, '', trim($_SERVER['PATH_INFO'], '/'));
             foreach ($routeItem as $route) {
                 $rule = $route[0];
                 // 路由正則
                 if (preg_match($rule, $regx, $matches)) {
                     // 匹配路由定義
                     $_GET[C('VAR_MODULE')] = $route[1];
                     $_GET[C('VAR_ACTION')] = $route[2];
                     //	獲取當前路由參數對應的變量
                     if (!isset($_GET[C('VAR_ROUTER')])) {
                         $vars = explode(',', $route[3]);
                         for ($i = 0; $i < count($vars); $i++) {
                             $_GET[$vars[$i]] = $matches[$i + 1];
                         }
                         // 解析剩餘的URL參數
                         $res = preg_replace('@(\\w+)\\/([^,\\/]+)@e', '$_GET[\'\\1\']="\\2";', str_replace($matches[0], '', $regx));
                     }
                     if (isset($route[4])) {
                         // 路由裏麵本身包含固定參數 形式為 a=111&b=222
                         parse_str($route[4], $params);
                         $_GET = array_merge($_GET, $params);
                     }
                     //unset($_SERVER['PATH_INFO']);
                     self::$useRoute = true;
                     break;
                 }
             }
         }
     }
 }
開發者ID:skiman100,項目名稱:thinksns,代碼行數:83,代碼來源:Dispatcher.class.php


注:本文中的Dispatcher::useRoute方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。