91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP如何實現路由Route功能?

發布時間:2020-05-20 15:38:40 來源:億速云 閱讀:382 作者:鴿子 欄目:編程語言

對于由原生PHP寫成的獨立PHP框架,利用單一入口文件實現路徑的訪問。這時我們會遇到的首要問題是:文件的相互包含,其次就是路由分配。當我們不利用成熟的PHP框架進行web開發時,我們就會發現上述兩個問題會是很困擾我們的問題所在。

問題解決方案:

1、文件包含

php的文件包含有兩種方式:require和include,兩個方法的區別在于利用require包含文件當出錯時,會報出嚴重錯誤,同時PHP腳本會停止運行;而利用include包含文件出錯時,會有警告,但PHP腳本仍然會繼續向下執行。同時兩個方法都包含對應的xxx_once方法,可以避免”declare class”的問題。所以一般使用文件包含的時候我們盡量使用include_once包含文件。

同時在關于文件包含的路徑問題上,我們可以利用設置全局變量的方式,依托入口文件的絕對路徑,去尋找其他路徑文件。修改php.ini中的inclue_path路徑當然也是另一種方式,利用require和include包含文件,假如是相對路徑的方式,首先會根據php.ini配置文件中的include_path的設置尋找。

2、路由分配

基于php的路由分配,實質上來說就是利用url中的path去匹配對應的控制類,同時調用其中的方法進行相關操作的處理。

一言不合上代碼:

<?php
/**
 * Author:helen
 * CreateTime: 2016/07/27 10:26
 * Description:
 */
// 權限控制
include_once './auth.php';
// 應用入口文件
date_default_timezone_set("Asia/Shanghai");
header('Content-type: text/html;charset=utf-8');
// 項目根路徑
define('BASEPATH', dirname(__FILE__));
// 調試模式
define('APP_DEBUG', True);
// 引入配置文件
include_once BASEPATH . '/config/config.php';
// 路由控制
$router = include_once BASEPATH . '/config/router.php';
if ($_SERVER['HTTP_HOST'] !== 'xxx.com') {
    var_dump('當前host不被允許');
} else {
    $request_path = str_replace('/index.php', '', $_SERVER['PHP_SELF']);
    $request_query = getCurrentQuery();
    if (array_key_exists($request_path, $router)) {
        $module_file = BASEPATH . $router[$request_path]['file_name'];
        $class_name = $router[$request_path]['class_name'];
        $method_name = $router[$request_path]['method_name'];
        if (file_exists($module_file)) {
            include $module_file;
            $obj_module = new $class_name();
            if (!method_exists($obj_module, $method_name)) {
                die("要調用的方法不存在");
            } else {
                if (is_callable(array($obj_module, $method_name))) {
                    $obj_module->$method_name($request_query, $_POST);
                }
            }
        } else {
            die("定義的模塊不存在");
        }
    } else {
        echo '頁面不存在';
    }
}

利用上述方式就可實現基本的PHP框架的路由分配。

以上就是PHP簡單實現路由Route功能的詳細內容,更多請關注億速云其它相關文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邵武市| 古交市| 象州县| 黔东| 囊谦县| 泽州县| 汤阴县| 迁西县| 房产| 临颍县| 高雄县| 榆中县| 台湾省| 内江市| 夏邑县| 平乡县| 寻乌县| 门源| 启东市| 新丰县| 长垣县| 高平市| 碌曲县| 黄大仙区| 通化县| 九寨沟县| 桐梓县| 砀山县| 修文县| 金塔县| 确山县| 永川市| 克东县| 漳平市| 金华市| 常熟市| 新宾| 慈溪市| 杭锦旗| 甘洛县| 政和县|