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 相关文章推荐
超级简单的发送邮件程序
Oct 09 PHP
pdo中使用参数化查询sql
Aug 11 PHP
php判断ip黑名单程序代码实例
Feb 24 PHP
ThinkPHP之import方法实例详解
Jun 20 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
Jun 23 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
Nov 15 PHP
php采用session实现防止页面重复刷新
Dec 24 PHP
Smarty模板简单配置与使用方法示例
May 23 PHP
Zend Framework入门教程之Zend_Db数据库操作详解
Dec 08 PHP
PHP 表单提交及处理表单数据详解及实例
Dec 27 PHP
php使用PDO执行SQL语句的方法分析
Feb 16 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
Jun 07 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
discuz Passport 通行证 整合笔记
2008/06/30 PHP
php将字符串全部转换成大写或者小写的方法
2015/03/17 PHP
php文件扩展名判断及获取文件扩展名的N种方法
2015/09/12 PHP
基于PHP-FPM进程池探秘
2017/10/17 PHP
jquery获取input表单值的代码
2010/04/19 Javascript
基于jQuery的公告无限循环滚动实现代码
2012/05/11 Javascript
JavaScript通过join函数连接数组里所有元素的方法
2015/03/20 Javascript
jQuery实现点击后标记当前菜单位置(背景高亮菜单)效果
2015/08/22 Javascript
详解jQuery UI库中文本输入自动补全功能的用法
2016/04/23 Javascript
JQuery判断正整数整理小结
2017/08/21 jQuery
Node.js学习之地址解析模块URL的使用详解
2017/09/28 Javascript
Vue添加请求拦截器及vue-resource 拦截器使用
2017/11/23 Javascript
Vue组件通信的四种方式汇总
2018/02/08 Javascript
vue实现底部菜单功能
2018/07/24 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
vue用BMap百度地图实现即时搜索功能
2019/09/26 Javascript
详解python中的线程与线程池
2019/05/10 Python
python 并发编程 多路复用IO模型详解
2019/08/20 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
毕业生医学检验求职信
2013/10/16 职场文书
英文版餐饮业求职信
2013/10/18 职场文书
精彩的大学生自我评价
2013/11/17 职场文书
酒店led欢迎词
2014/01/09 职场文书
三年级音乐教学反思
2014/01/28 职场文书
大学考试作弊检讨书
2014/01/30 职场文书
学校庆元旦歌咏比赛主持词
2014/03/18 职场文书
2014五一国际劳动节活动总结范文
2014/04/14 职场文书
推广普通话标语
2014/06/27 职场文书
奥巴马经典演讲稿
2014/09/13 职场文书
个人廉洁自律总结
2015/03/06 职场文书
优秀大学生自荐信
2015/03/26 职场文书
拔河比赛队名及霸气口号
2015/12/24 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
2016年党员创先争优公开承诺书
2016/03/25 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
详解Python+OpenCV进行基础的图像操作
2022/02/15 Python