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的历史和优缺点
Oct 09 PHP
3.从实例开始
Oct 09 PHP
PHP 获取目录下的图片并随机显示的代码
Dec 28 PHP
分享php分页的功能模块
Jun 16 PHP
学习php设计模式 php实现装饰器模式(decorator)
Dec 07 PHP
php实现将base64格式图片保存在指定目录的方法
Oct 13 PHP
PHP魔术方法以及关于独立实例与相连实例的全面讲解
Oct 18 PHP
CI框架表单验证实例详解
Nov 21 PHP
php结合redis高并发下发帖、发微博的实现方法
Dec 15 PHP
利用PHP实现一个简单的用户登记表示例
Apr 25 PHP
laravel 实现登陆后返回登陆前的页面方法
Oct 03 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
Feb 27 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
多数据表共用一个页的新闻发布
2006/10/09 PHP
PHP转换文件夹下所有文件编码的实现代码
2013/06/06 PHP
PHP设计模式之迭代器模式的深入解析
2013/06/13 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
2014/06/23 PHP
php实现过滤字符串中的中文和数字实例
2015/07/29 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
PHPCMS忘记后台密码的解决办法
2016/10/30 PHP
使用PHP反射机制来构造&quot;CREATE TABLE&quot;的sql语句
2019/03/21 PHP
动态加载外部javascript文件的函数代码分享
2011/07/28 Javascript
JavaScript中的异常捕捉介绍
2014/12/31 Javascript
js+html5实现的自由落体运动效果代码
2016/01/28 Javascript
jQuery中通过ajax的get()函数读取页面的方法
2016/02/29 Javascript
详解JavaScript模块化开发
2016/12/04 Javascript
完美实现js选项卡切换效果(二)
2017/03/08 Javascript
js,jq,css多方面实现简易下拉菜单功能
2017/05/13 Javascript
关于angularJs清除浏览器缓存的方法
2017/11/28 Javascript
three.js实现3D模型展示的示例代码
2017/12/31 Javascript
[01:06:42]VP vs NewBee Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
python实现将元祖转换成数组的方法
2015/05/04 Python
Python检测字符串中是否包含某字符集合中的字符
2015/05/21 Python
Python3 Post登录并且保存cookie登录其他页面的方法
2018/12/28 Python
Python实现计算字符串中出现次数最多的字符示例
2019/01/21 Python
浅谈python的深浅拷贝以及fromkeys的用法
2019/03/08 Python
Keras 使用 Lambda层详解
2020/06/10 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
FORZIERI澳大利亚站:全球顶级奢华配饰精品店
2016/12/31 全球购物
经营管理策划方案
2014/05/22 职场文书
白莲教口号
2014/06/18 职场文书
商场租赁意向书
2014/07/30 职场文书
法学专业大学生实习自我鉴定
2014/10/05 职场文书
综合素质评价思想道德自我评价
2015/03/09 职场文书
检讨书模板大全
2015/05/07 职场文书
解除处分决定书
2015/06/25 职场文书
工伤调解协议书
2016/03/21 职场文书
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python