首頁  >  文章  >  後端開發  >  php如何實現路由分配

php如何實現路由分配

coldplay.xixi
coldplay.xixi原創
2020-08-10 11:45:233624瀏覽

php實作路由分配的方法:1、使用require和include方式進行php的檔案包含;2、利用url中的path去匹配對應的控制類,同時呼叫其中的方法進行相關操作的處理。

php如何實現路由分配

php實作路由指派的方法:

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
// 权限控制
include_once &#39;./auth.php&#39;;
// 应用入口文件
date_default_timezone_set("Asia/Shanghai");
header(&#39;Content-type: text/html;charset=utf-8&#39;);
// 项目根路径
define(&#39;BASEPATH&#39;, dirname(__FILE__));
// 调试模式
define(&#39;APP_DEBUG&#39;, True);
// 引入配置文件
include_once BASEPATH . &#39;/config/config.php&#39;;
// 路由控制
$router = include_once BASEPATH . &#39;/config/router.php&#39;;
if ($_SERVER[&#39;HTTP_HOST&#39;] !== &#39;xxx.com&#39;) {
    var_dump(&#39;当前host不被允许&#39;);
} else {
    $request_path = str_replace(&#39;/index.php&#39;, &#39;&#39;, $_SERVER[&#39;PHP_SELF&#39;]);
    $request_query = getCurrentQuery();
    if (array_key_exists($request_path, $router)) {
        $module_file = BASEPATH . $router[$request_path][&#39;file_name&#39;];
        $class_name = $router[$request_path][&#39;class_name&#39;];
        $method_name = $router[$request_path][&#39;method_name&#39;];
        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 &#39;页面不存在&#39;;
    }
}

#相關學習推薦:php程式設計(影片)

以上是php如何實現路由分配的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn