Thinkphp 空操作、空控制器、命名空间(详解)


Posted in PHP onMay 05, 2017

1、空操作

空操作是指系统在找不到请求的操作方法的时候,会定位到空操作(_empty)方法来执行,利用这个机制,我们可以实现错误页面和一些URL的优化。

http://网址/index.php/Home/Main/login

http://网址/index.php/Home/Main/hello 空操作

出现页面:

Thinkphp 空操作、空控制器、命名空间(详解)

显示的错误信息过于详细,为安全以及优化页面起见,实行空操作

1、做一个_empty()方法。要在子类里面写,不要再父类里(推荐使用)

function _empty()
{
echo "网页不存在,请检查浏览器地址信息!";
}

Thinkphp 空操作、空控制器、命名空间(详解)

2.造一个该方法对应的模版

在view/main下面新建一个text.html文件

<body>
<h1>别乱访问</h1>
</body>
</html>

Thinkphp 空操作、空控制器、命名空间(详解)

注意:空操作方法仅在你的控制器类继承系统的Think\Controller类才有效,否则需要自己定义 __call 来实现。

2、空控制器

空控制器的概念是指当系统找不到请求的控制器名称的时候,系统会尝试定位空控制器(EmptyController),利用这个机制我们可以用来定制错误页面和进行URL的优化。

Home/Controller/EmptyController.class.php

<?php
namespace Home\Controller;
use Think\Controller;
class EmptyController extends Controller
{
  public function _empty()
  {
    echo "访问的页面不存在!";
    }
  
}

Thinkphp 空操作、空控制器、命名空间(详解)

3、跨控制器调用

一个控制器在执行的时候,可以实例化另外一个控制,并通过对象访问其指定方法。

跨控制器调用可以节省我们代码的工作量

3.1 同一模块下:

例如:在Home/Controller中有两个控制器:IndexController.class.php和MainController.class.php

Thinkphp 空操作、空控制器、命名空间(详解)

在IndexController.class.php有一个方法:

public function ShuChu()
  {
    return "教务管理系统!";  
  }

现在想要在 MainController.class.php中也调用ShuChu()方法

function DiaoYong()
   {
    //方法一:造对象
    //$index=new IndexController(); 
    //echo $index->ShuChu();
    
    //造对象有快捷函数供我们使用:
    //A(“[模块/]控制器标志”) 实例化控制器对象
    //方法二:使用A()方法
    //$index=A("Index");
    //echo $index->ShuChu();
    
    //R([模块/]控制器标志/操作方法) 实例化对象同时调用指定方法
    //方法三:使用R()方法,造对象并且调用某个特定的方法
    echo R("Index/ShuChu");
}

运行结果:

Thinkphp 空操作、空控制器、命名空间(详解)

3.2 不同模块下:

新添加一个模块Admin

Thinkphp 空操作、空控制器、命名空间(详解)

TextController.class.php:

<?php
namespace Admin\Controller;
use Think\Controller;
class TextController extends Controller
{  
  public function Text()
  {
    echo "HHHHH";
  }
}

现在想要在Home/Controller/ MainController.class.php中也调用Text()方法

function Text()
  {
    //跨模块调用
        
    //方法一:使用A()方法
    //$tt=A("Admin/Text");
    //echo $tt->Text();
    
    //方法二:使用R()方法,造对象并且调用某个特定的方法
    echo R("Admin/Text/Text");
    
    }

运行结果:

Thinkphp 空操作、空控制器、命名空间(详解)

4.命名空间namespace

相当于一个虚拟的目录

正常管理文件使用文件夹--物理区分

TP框架的初始命名空间是:ThinkPHP\Library

在TP框架下命名空间里面使用\代表的是初始命名空间(ThinkPHP\Library)

1.系统目录下根命名空间是ThinkPHP\Library下面的文件夹名称命名的

2.模块的根命名空间是以模块名命名的

在定义命名空间的时候需要从根写起例如:Home\Controller 例如:Think\Model

如果要使用某个类文件,引入该类命名空间的时候:

使用use关键字,后面写该类的命名空间 后面加上 "\文件名"

如果不想引入命名空间:在造类的对象的时候可以使用\(初始命名空间)来找到对应的类
例如:new \Think\Page(30);

以上这篇Thinkphp 空操作、空控制器、命名空间(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
PHP 超链接 抓取实现代码
Jun 29 PHP
PHP中将网页导出为Word文档的代码
May 25 PHP
header导出Excel应用示例
Jan 24 PHP
php+js iframe实现上传头像界面无跳转
Apr 29 PHP
PHP创建PowerPoint2007文档的方法
Dec 10 PHP
php查询操作实现投票功能
May 09 PHP
yii2实现根据时间搜索的方法
May 25 PHP
PHP使用GD库输出汉字的方法【测试可用】
Nov 10 PHP
PHP获取当前系统时间的方法小结
Oct 03 PHP
phpinfo无法显示的原因及解决办法
Feb 15 PHP
PHP后台备份MySQL数据库的源码实例
Mar 18 PHP
PHP的cookie与session原理及用法详解
Sep 27 PHP
thinkPHP实现的联动菜单功能详解
May 05 #PHP
thinkPHP实现的省市区三级联动功能示例
May 05 #PHP
php str_replace替换指定次数的方法详解
May 05 #PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
May 05 #PHP
PHP curl 或 file_get_contents 获取需要授权页面的方法
May 05 #PHP
php 浮点数比较方法详解
May 05 #PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
May 05 #PHP
You might like
解析PHP中的unset究竟会不会释放内存
2013/07/18 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
2016/05/13 PHP
ThinkPHP使用Ueditor的方法详解
2016/05/20 PHP
PHP实现截取中文字符串不出现?号的解决方法
2016/12/29 PHP
ThinkPHP3.2.3框架Memcache缓存使用方法实例总结
2019/04/15 PHP
解决laravel5.4下的group by报错的问题
2019/10/16 PHP
jQuery之折叠面板的深入解析
2013/06/19 Javascript
Javascript Objects详解
2014/09/04 Javascript
深入理解setTimeout函数和setInterval函数
2016/05/20 Javascript
微信小程序 教程之wxapp视图容器 swiper
2016/10/19 Javascript
微信公众平台开发教程(五)详解自定义菜单
2016/12/02 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
通过nodejs 服务器读取HTML文件渲染到页面的方法
2018/05/17 NodeJs
JavaScript 实现下雪特效的示例代码
2020/09/09 Javascript
如何手写简易的 Vue Router
2020/10/10 Javascript
[01:03:41]完美世界DOTA2联赛PWL S3 DLG vs Phoenix 第一场 12.17
2020/12/19 DOTA
python传递参数方式小结
2015/04/17 Python
搞笑的程序猿:看看你是哪种Python程序员
2015/06/12 Python
Python使用爬虫猜密码
2016/02/19 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
2018/06/14 Python
Python实现的NN神经网络算法完整示例
2018/06/19 Python
Python文件常见操作实例分析【读写、遍历】
2018/12/10 Python
Python实现的旋转数组功能算法示例
2019/02/23 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
纯CSS改变webkit内核浏览器的滚动条样式
2014/04/17 HTML / CSS
会计专业毕业生自我评价
2013/09/25 职场文书
同事打架检讨书
2014/02/04 职场文书
加多宝凉茶广告词
2014/03/18 职场文书
党员承诺书格式
2014/05/21 职场文书
毕业大学生自荐信
2014/06/17 职场文书
幼儿园园长新年寄语2015
2014/12/08 职场文书
小学教师教学随笔
2015/08/14 职场文书
爱岗敬业先进典型事迹材料(2016推荐版)
2016/02/26 职场文书
浅谈python数据类型及其操作
2021/05/25 Python
python plt.plot bar 如何设置绘图尺寸大小
2021/06/01 Python
HTML页面点击按钮关闭页面的多种方式
2022/12/24 HTML / CSS