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


PHP route::checkRoute方法代碼示例

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


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

示例1: parse


//.........這裏部分代碼省略.........
         /*上麵已經獲得的pathinfo,下麵開始分析pathinfo*/
         //再次檢查pathinfo,如果還為空,說明為普通模式
         if (empty($_SERVER['PATH_INFO'])) {
             $_SERVER['PATH_INFO'] = '';
             define('__INFO__', '');
             define('__EXT__', '');
         } else {
             //首選取得配置文件中pathinfo的分隔符
             $depr = C("URL_PATHINFO_DEPR");
             //去掉pathinfo前後的/
             define('__INFO__', trim($_SERVER['PATH_INFO'], '/'));
             //獲取pathinfo的後綴,如果有的話
             define('__EXT__', strtolower(pathinfo($_SERVER['PATH_INFO'], PATHINFO_EXTENSION)));
             $_SERVER['PATH_INFO'] = __INFO__;
             //開始從pathinfo中分析出mvc參數,前提條件是你沒有使用綁定模塊,並且使用了多模塊
             if (isset($_SERVER['PATH_INFO']) && !defined("BIND_MODULE") && C("MULTI_MODULE")) {
                 //解析出模塊名稱,約定pathinfo的第一個分割符前麵的字符肯定是模塊
                 $paths = explode($depr, __INFO__, 2);
                 //得到允許的模塊列表
                 $allowList = C("MODULE_ALLOW_LIST");
                 //拿到模塊名稱後,對模塊名稱進行檢查。要檢查的內容包括是否是允許的模塊列表
                 if (empty($allowList) || is_array($allowList) && in_array($paths[0], $allowList)) {
                     //合並module到get全局變量中
                     $_GET[$m] = $paths[0];
                     //更新pathinfo
                     $_SERVER['PATH_INFO'] = isset($paths[1]) ? $paths[1] : '';
                 }
             }
         }
         //到此為止,如果是pathinfo模式,那麽解析出的module已經合並到get超全局變量中,還有一種情況是如果綁定了模塊,
         //那麽get中的模塊名就要變了,這裏使用一個MODULE_NAME常量存儲真正的模塊名稱
         //除此之外,如果是普通模式的話,那麽mvc自動就會在get超全局變量中。
         define("MODULE_NAME", defined("BIND_MODULE") ? BIND_MODULE : $_GET[$m]);
         //到模塊名稱後,接下來要做的就是檢測模塊文件夾是否存在,存在的開始加載模塊中的配置文件
         if (MODULE_NAME && is_dir(APPLICATION_PATH . '/' . MODULE_NAME)) {
             //定義當前模塊路徑
             define('MODULE_PATH', APPLICATION_PATH . '/' . MODULE_NAME . '/');
             //定義當前的模塊配置文件路徑
             define("MODULE_PATH_CONFIG", MODULE_PATH . '/common/config/config.php');
             //定義當前模塊的公共函數路徑
             define("MODULE_PATH_FUNC", MODULE_PATH . '/common/func/functions.php');
             //加載配置文件和公共函數
             if (is_file(MODULE_PATH_CONFIG)) {
                 C(require MODULE_PATH_CONFIG);
             }
             if (is_file(MODULE_PATH_FUNC)) {
                 include MODULE_PATH_FUNC;
             }
         } else {
             die(MODULE_NAME . "不存在!");
         }
         //獲取應用的入口文件
         /*
                 這裏不同的url模式下應用的入口文件不一樣
                 1:一般情況下: localhost/index.php
                 2: 兼容模式下: localhost/index.php?s=
                 3: 重寫模式下:要去掉index.php
         */
         if (!defined('__APP__')) {
             // die(_PHP_FILE_);
             $urlMode = C('URL_MODEL');
             if ($urlMode == URL_COMPAT) {
                 // 兼容模式判斷
                 define('PHP_FILE', _PHP_FILE_ . '?' . $varPath . '=');
             } elseif ($urlMode == URL_REWRITE) {
                 $url = dirname(_PHP_FILE_);
                 if ($url == '/' || $url == '\\') {
                     $url = '';
                 }
                 define('PHP_FILE', $url);
             } else {
                 define('PHP_FILE', _PHP_FILE_);
             }
             // 當前應用地址
             define('__APP__', strip_tags(PHP_FILE));
         }
         //定義當前模塊的url地址
         define('__MODULE__', defined('BIND_MODULE') || !C('MULTI_MODULE') ? __APP__ : __APP__ . '/' . MODULE_NAME);
         //路由檢測
         if ('' != $_SERVER['PATH_INFO'] && (!C('URL_ROUTER_ON') || !route::checkRoute())) {
             $paths = explode($depr, trim($_SERVER['PATH_INFO'], $depr));
             //獲取控製器
             if (!defined("BIND_CONTROLLER")) {
                 $_GET[$c] = array_shift($paths);
             }
             // 獲取操作
             if (!defined('BIND_ACTION')) {
                 $_GET[$a] = array_shift($paths);
             }
             $var = array();
             //解析剩下的參數
             //這裏使用php5.3以後的匿名函數和閉包特性
             preg_replace_callback('/(\\w+)\\/([^\\/]+)/', function ($matches) use(&$var) {
                 $var[$matches[1]] = strip_tags($matches[2]);
             }, implode('/', $paths));
             //合並到get超全局變量中
             $_GET = array_merge($var, $_GET);
         }
     }
 }
開發者ID:sujinw,項目名稱:tcphp,代碼行數:101,代碼來源:url.class.php


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