本文整理匯總了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;
}
}
}
}
}
示例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;
}
}
}
}
}