小编给大家分享一下php实现路由分配的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
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实现路由分配的方法有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。