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 相关文章推荐
在windows iis5下安装php4.0+mysql之我见
Oct 09 PHP
php设计模式 Strategy(策略模式)
Jun 26 PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
Dec 28 PHP
PHP中header和session_start前不能有输出原因分析
Jan 11 PHP
PHP中数组定义的几种方法
Sep 01 PHP
php解析xml提示Invalid byte 1 of 1-byte UTF-8 sequence错误的处理方法
Nov 14 PHP
一个不易被发现的PHP后门代码解析
Jul 05 PHP
php获取客户端电脑屏幕参数的方法
Jan 09 PHP
php实现粘贴截图并完成上传功能
May 17 PHP
PHP智能识别收货地址信息实例
Jan 05 PHP
Laravel 微信小程序后端实现用户登录的示例代码
Nov 26 PHP
PHP中用Trait封装单例模式的实现
Dec 18 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
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
PHP使用递归算法无限遍历数组示例
2017/01/13 PHP
javascript引导程序
2008/10/26 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
JQuery的常用选择器、过滤器、方法全面介绍
2016/05/25 Javascript
AngularJS实现星星等级评分功能
2016/09/24 Javascript
微信小程序(应用号)简单实例应用及实例详解
2016/09/26 Javascript
Jquery把获取到的input值转换成json
2017/05/15 jQuery
angular select 默认值设置方法
2017/06/23 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
JS实现瀑布流布局
2017/10/21 Javascript
Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用
2019/04/11 Javascript
vue实现随机验证码功能的实例代码
2019/04/30 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
2020/04/09 Javascript
js前端对于大量数据的展示方式及处理方法
2020/12/02 Javascript
[02:42]完美大师赛主赛事淘汰赛第三日观众采访
2017/11/25 DOTA
Python中使用wxPython开发的一个简易笔记本程序实例
2015/02/08 Python
python逆序打印各位数字的方法
2018/06/25 Python
对Python中小整数对象池和大整数对象池的使用详解
2019/07/09 Python
Python的matplotlib绘图如何修改背景颜色的实现
2019/07/16 Python
python实现超市商品销售管理系统
2019/10/25 Python
解决echarts中饼图标签重叠的问题
2020/05/16 Python
Python爬虫获取豆瓣电影并写入excel
2020/07/31 Python
全网最详细的PyCharm+Anaconda的安装过程图解
2021/01/25 Python
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
历史专业个人求职信范文
2013/12/07 职场文书
送货司机岗位职责
2013/12/11 职场文书
施工班组长岗位职责
2014/01/05 职场文书
法人授权委托书格式
2014/04/08 职场文书
施工安全承诺书
2014/05/22 职场文书
本科应届生自荐信
2014/06/29 职场文书
工地门卫岗位职责范本
2014/07/01 职场文书
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
初中生庆国庆演讲稿范文2014
2014/09/25 职场文书
辩护意见书
2015/06/04 职场文书