ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解


Posted in PHP onApril 03, 2019

本文实例讲述了ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面。分享给大家供大家参考,具体如下:

【演示准备】

    首先下载了一个ThinkPHP3.2.3,目录结构如下:(只有Home模块、Index控制器、index操作方法)

ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解

    然后找了一个简易的错误404页面404.html放到了根目录:

ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解

【空模块】

访问一个不存在的模块Admin,错误提示:

ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解

 修改根目录下 ThinkPHP/Library/Think/Dispatcher.class.php 178行代码:

// E(L('_MODULE_NOT_EXIST_').':'.MODULE_NAME);
header("Location: /404.html");
exit();
再次访问空模块:

ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解

【空控制器】

访问Home模块不存在的控制器User,错误提示:

ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解

查看根目录下 ThinkPHP/Library/Think/App.class.php 101行前后代码:

ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解

通常的处理方法是:在当前模块下新建一个Empty控制器,在里面做404跳转(A方法实例化Empty控制器)。

EmptyController.class.php:

<?php
namespace Home\Controller;
use Think\Controller;
class EmptyController extends Controller {
  public function index() {
    header("Location:/404.html");
    exit();
  }
}

再次访问空控制器:

ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解

 【空操作】

访问Home模块下Index控制器不存在的test操作方法,错误提示:

 ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解

查看根目录下 ThinkPHP/Library/Think/Controller.class.php 170行前后代码: 

ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解

通常的处理方法是:在当前模块下新建一个Public控制器(继承Controller),在里面定义_empty方法跳转404页面, 然后其他控制器再继承Public。

PublicController.class.php:

<?php
namespace Home\Controller;
use Think\Controller;
class PublicController extends Controller {
  public function _empty() {
    header("Location:/404.html");
    exit();
  }
}

Index控制器继承Puclic:

ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解

再次访问空操作方法: 

ThinkPHP3.2.3框架实现的空模块、空控制器、空操作,跳转到错误404页面图文详解

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
global.php
Dec 09 PHP
用PHP实现的随机广告显示代码
Jun 14 PHP
php中ob(Output Buffer 输出缓冲)函数使用方法
Jul 21 PHP
php中mt_rand()随机数函数用法
Nov 24 PHP
PHP基于文件存储实现缓存的方法
Jul 20 PHP
Zend Framework实现将session存储在memcache中的方法
Mar 22 PHP
PHP实现的进度条效果详解
May 03 PHP
Yii2实现跨mysql数据库关联查询排序功能代码
Feb 10 PHP
PHP实现的最大正向匹配算法示例
Dec 19 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
Feb 21 PHP
Thinkphp 框架扩展之类库扩展操作详解
Apr 23 PHP
aec加密 php_php aes加密解密类(兼容php5、php7)
Mar 14 PHP
PHP反射实际应用示例
Apr 03 #PHP
ThinkPHP3.2.3框架实现执行原生SQL语句的方法示例
Apr 03 #PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
Apr 03 #PHP
PHP快速排序算法实现的原理及代码详解
Apr 03 #PHP
Laravel5.7框架安装与使用学习笔记图文详解
Apr 02 #PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
Apr 02 #PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
Apr 02 #PHP
You might like
tp5.1框架数据库子查询操作实例分析
2020/05/26 PHP
PHP生成图表pChart的示例解析
2020/07/31 PHP
List the UTC Time on a Computer
2007/06/11 Javascript
asp(javascript)全角半角转换代码 dbc2sbc
2009/08/06 Javascript
jQuery 开天辟地入门篇一
2009/12/09 Javascript
JQuery 常用方法和事件详细介绍
2013/04/18 Javascript
jQuery阻止同类型事件小结
2013/04/19 Javascript
Angularjs 基础入门
2014/12/26 Javascript
理解 JavaScript Scoping &amp; Hoisting(二)
2015/11/18 Javascript
jQuery解决$符号命名冲突
2016/06/18 Javascript
深入浅出ES6新特性之函数默认参数和箭头函数
2016/08/01 Javascript
Javascript 事件冒泡机制详细介绍
2016/10/10 Javascript
AngularJS动态绑定HTML的方法分析
2016/11/07 Javascript
jQuery序列化表单成对象的简单实现
2016/11/29 Javascript
基于Vue实例对象的数据选项
2017/08/09 Javascript
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
2020/06/17 Javascript
微信小程序实现发送验证码按钮效果
2018/12/20 Javascript
解决LayUI加上form.render()下拉框和单选以及复选框不出来的问题
2019/09/27 Javascript
vue组件讲解(is属性的用法)模板标签替换操作
2020/09/04 Javascript
element 动态合并表格的步骤
2020/12/31 Javascript
JS代码实现页面切换效果
2021/01/10 Javascript
Django RBAC权限管理设计过程详解
2019/08/06 Python
Python实现RGB与HSI颜色空间的互换方式
2019/11/27 Python
通过实例简单了解python yield使用方法
2020/08/06 Python
百度JavaScript笔试题
2015/01/15 面试题
婚礼司仪主持词
2014/03/14 职场文书
诚信考试标语
2014/06/24 职场文书
2014大学生中国梦主题教育学习思想汇报
2014/09/10 职场文书
云台山导游词
2015/02/03 职场文书
让世界充满爱观后感
2015/06/10 职场文书
深入浅析Redis 集群伸缩原理
2021/05/15 Redis
Python多线程 Queue 模块常见用法
2021/07/04 Python
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis
聊聊配置 Nginx 访问与错误日志的问题
2022/05/25 Servers
ant design vue的form表单取值方法
2022/06/01 Vue.js
详解flex:1什么意思
2022/07/23 HTML / CSS