溫馨提示×

溫馨提示×

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

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

php實(shí)現(xiàn)路由分配的方法

發(fā)布時(shí)間:2020-08-12 10:30:22 來源:億速云 閱讀:224 作者:小新 欄目:編程語言

小編給大家分享一下php實(shí)現(xiàn)路由分配的方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

php實(shí)現(xiàn)路由分配的方法:1、使用require和include方式進(jìn)行php的文件包含;2、利用url中的path去匹配對應(yīng)的控制類,同時(shí)調(diào)用其中的方法進(jìn)行相關(guān)操作的處理。

php實(shí)現(xiàn)路由分配的方法

php實(shí)現(xiàn)路由分配的方法:

1、文件包含

php的文件包含有兩種方式:require和include,兩個(gè)方法的區(qū)別在于利用require包含文件當(dāng)出錯(cuò)時(shí),會(huì)報(bào)出嚴(yán)重錯(cuò)誤,同時(shí)PHP腳本會(huì)停止運(yùn)行;而利用include包含文件出錯(cuò)時(shí),會(huì)有警告,但PHP腳本仍然會(huì)繼續(xù)向下執(zhí)行。同時(shí)兩個(gè)方法都包含對應(yīng)的xxx_once方法,可以避免”declare class”的問題。所以一般使用文件包含的時(shí)候我們盡量使用include_once包含文件。

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

2、路由分配

基于php的路由分配,實(shí)質(zhì)上來說就是利用url中的path去匹配對應(yīng)的控制類,同時(shí)調(diào)用其中的方法進(jìn)行相關(guān)操作的處理。

一言不合上代碼:

<?php
// 權(quán)限控制
include_once './auth.php';
// 應(yīng)用入口文件
date_default_timezone_set("Asia/Shanghai");
header('Content-type: text/html;charset=utf-8');
// 項(xiàng)目根路徑
define('BASEPATH', dirname(__FILE__));
// 調(diào)試模式
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('當(dāng)前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("要調(diào)用的方法不存在");
            } else {
                if (is_callable(array($obj_module, $method_name))) {
                    $obj_module->$method_name($request_query, $_POST);
                }
            }
        } else {
            die("定義的模塊不存在");
        }
    } else {
        echo '頁面不存在';
    }
}

看完了這篇文章,相信你對php實(shí)現(xiàn)路由分配的方法有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI