PHP简单实现路由Route功能

PHP简单实现路由Route功能,第1张

概述PHP简单实现路由Route功能 对于由原生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教程》 总结

以上是内存溢出为你收集整理的PHP简单实现路由Route功能全部内容,希望文章能够帮你解决PHP简单实现路由Route功能所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1156667.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存