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 相关文章推荐
php MySQL与分页效率
Jun 04 PHP
PHP操作数组相关函数
Feb 03 PHP
PHP array_multisort()函数的使用札记
Jul 03 PHP
Server.HTMLEncode让代码在页面里显示为源代码
Dec 08 PHP
php修改指定文件后缀的方法
Sep 11 PHP
Codeigniter框架实现获取分页数据和总条数的方法
Dec 05 PHP
使用php实现从身份证中提取生日
May 09 PHP
老生常谈PHP 文件写入和读取(必看篇)
May 22 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
Jun 07 PHP
php实现的redis缓存类定义与使用方法示例
Aug 09 PHP
PHP按一定比例压缩图片的方法
Oct 12 PHP
PHP PDO和消息队列的个人理解与应用实例分析
Nov 25 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
Javascript学习笔记7 原型链的原理
2010/01/11 Javascript
js中将字符串转换成json的三种方式
2011/01/12 Javascript
jquery实现更改表格行顺序示例
2014/04/30 Javascript
jquery中each遍历对象和数组示例
2014/08/05 Javascript
jQuery实现的Div窗口震动效果实例
2015/08/07 Javascript
第五篇Bootstrap 排版
2016/06/21 Javascript
教你用十行node.js代码读取docx的文本
2017/03/08 Javascript
基于Vue2x的图片预览插件的示例代码
2018/05/14 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
2018/08/31 Javascript
Angular使用cli生成自定义文件、组件的方法
2018/09/04 Javascript
vue.js中ref和$refs的使用及示例讲解
2019/08/14 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
2019/12/06 Javascript
利用JS判断元素是否为数组的方法示例
2021/01/08 Javascript
python连接mysql并提交mysql事务示例
2014/03/05 Python
对于Python异常处理慎用“except:pass”建议
2015/04/02 Python
轻松掌握python设计模式之访问者模式
2016/11/18 Python
浅析Python中的赋值和深浅拷贝
2017/08/15 Python
Python reduce()函数的用法小结
2017/11/15 Python
Python实现判断一行代码是否为注释的方法
2018/05/23 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
Python中的 enum 模块源码详析
2019/01/09 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
Python如何调用JS文件中的函数
2019/08/16 Python
python3.6、opencv安装环境搭建过程(图文教程)
2019/11/05 Python
python爬虫开发之urllib模块详细使用方法与实例全解
2020/03/09 Python
基于CSS3实现的黑色个性导航菜单效果
2015/09/14 HTML / CSS
JAVA中运算符的分类及举例
2015/09/12 面试题
仓库管理专业个人的自我评价
2013/12/30 职场文书
应届毕业生简历自我评价
2014/01/31 职场文书
史上最牛的辞职信
2015/02/28 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
pytest配置文件pytest.ini的详细使用
2021/04/17 Python
Python opencv缺陷检测的实现及问题解决
2021/04/24 Python
MongoDB 常用的crud操作语句
2021/06/20 MongoDB
Java后端 Dubbo retries 超时重试机制的解决方案
2022/04/14 Java/Android