php實作路由分配的方法:1、使用require和include方式進行php的檔案包含;2、利用url中的path去匹配對應的控制類,同時呼叫其中的方法進行相關操作的處理。
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 './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如何實現路由分配的詳細內容。更多資訊請關注PHP中文網其他相關文章!