空操作和空控制器处理

空操作:就没有指定的操作方法

空控制器:没有指定控制器

1.空操作:(Admin是不存在的)

一般网站处于安全考虑不给用户提示任何错误信息

“空操作”本质意思:一个对象(控制器)调用本身不存在的方法

在OOP里边,对象调用本身不存在方法,处于用户体验比较好的角度考虑,我们可以在类里边制作一个魔术方法:function __call();

在tp里面控制器的父类:

父类中有个方法:

所以空操作有两种解决方案:

①     在对应的控制器里边制作一个方法,名称为”_empty”,这个控制器的空操作都会自动执行该方法。(推荐使用)

②     给空操作的名称制作一个同名的模板出来,系统会自动调用(之前可以后来不可以)

<?php
namespace Home\Controller;
use Think\Controller;
class MainController extends Controller
{public function Xianshi()
    {echo "Hello<br>";   } public function _empty(){echo "空操作,网页不存在,请检查浏览器信息";//http://localhost:8080/tp/index.php/Home/Login/Admin(admin不存在)}

现在的运行结果更为安全

2.空控制器

空控制器:在实例化控制器对象的时候,没有找到指定的类

什么时候实例化控制器对象:ThinkPHP/Library/Think/App.class.php

熟记文件:

index.php  入口文件

ThinkPHP/ThinkPHP.php  框架核心文件

ThinkPHP/Library/Think/Think.class.php  框架核心文件

ThinkPHP/Library/Think/App.class.php  框架应用文件

在App.class.php内部包括控制器对象创建,以及对象调用指定的方法呈现内容:

空控制器处理方案:可以再制作一个控制器,名称EmptyController.class.php

在该控制器内部其实只需要制作一个_empty()方法即可。

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

现在的运行结果:

3.跨控制器调用

跨控制器的调用可以省去很多的代码,更让人看清楚,

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

3.1同一模块下的操作

如下所示操作同一模块下的MainController.class.php和IndexController.class.php

在IndexController.class.php里面新建方法Shuchu

public function Shuchu(){echo "最喜欢的是你懂得";    }

在MainController.class.php里面新建方法Shishi

A(“[模块/]控制器标志”) 实例化控制器对象

R([模块/]控制器标志/操作方法)

public function Shishi(){//造对象//$index = new IndexController;    //echo $index->Shuchu();//使用A方法//$index = A("Index");//echo $index->Shuchu();//使用R方法,造对象并且调用某个特定的操作方法echo R("Index/Shuchu");
}

运行过后的结果:

3.2不同模块下的操作

仿照Home模块新建Admin里面的东西包含的目录都要一致

在Controller目录下新建TestController.class.php

<?php
namespace Admin\Controller;
use Think\Controller;
class TestController extends Controller
{public function Test(){//echo "hello";return "是Admin模块下的内容";    }
}

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

public function Shishi(){//跨模块调用//$test = A("Admin/Test");//echo $test->Test();echo R("Admin/Test/Test");}

运行后的结果:

4.命名空间

命名空间:
相当于一个虚拟的目录

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

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

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

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

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

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

如果要使用某个类文件,引入该类命名空间的时候:
使用use关键字,后面写该类的命名空间 后面加上 "\文件名"

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

转载于:https://www.cnblogs.com/Duriyya/p/5588244.html

6月14 空控制器和空操作及命名空间相关推荐

  1. tp5页面跳转,空控制器空方法

    namespace app\index\controller;use think\Controller;class Login extends Controller{//显示html页面public ...

  2. thinkPHP 空模块和空操作、前置操作和后置操作 具体介绍(十四)

    本章节:介绍 TP 空模块和空操作.前置操作和后置操作 具体介绍 一.空模块和空操作 1.空操作 function _empty($name){ $this->show("$name ...

  3. (图解)循环队列的三种判断队空、队满操作(附带源码和插入删除操作等一些基本操作)

    目录 一.普通的顺序存储队列 二.循环队列 (1)少用一个元素空间 i.初始化队列操作: iii.入队操作: iv.出队操作: (2)设置flag标志 i.初始化队列操作: ii.判断队空操作: ii ...

  4. 10月14星期一 恒指/美原油/美黄金 走势分析

    财经早餐 2019年10月14日星期一 重点关注的财经数据与事件 (日本东京证券交易所因体育节休市一日) ① 10:00 中国9月贸易帐 ② 10:50 中国9月以美元计算贸易帐 ③ 17:00 欧元 ...

  5. iphonex时间显示蓝色_10月14日发布!iPhone12上市时间及售价独家揭秘

    在经历了9月16日空欢喜一场的苹果(iPad)发布会后,大家都在期待新"罐"下iPhone12发布会到底什么时候召开,iPhone12到底什么时候可以上市,虽然我们POPPUR早有 ...

  6. c# 找出目录下的所有子目录_C# 基础知识系列- 14 IO篇 文件的操作(2)

    前接上一篇内容. 如果是第一次捧场的小伙伴,为了您阅读的连贯性,烦请扫一眼<C# 基础知识系列- 14 IO篇 文件的操作(1)>.本篇是IO之文件操作的第二篇,介绍一下目录和路径的相关类 ...

  7. 【财经期刊FM-Radio|2020年11月14日】

    title: [财经期刊FM-Radio|2020年11月14日] 微信公众号: 张良信息咨询服务工作室 [今日热点新闻一览↓↓] 能源股创最大周涨幅,欧美股市反弹连涨两周,中概新能源车盘中大逆转跌落 ...

  8. 首届博华深圳联展将于12月14日-16日在深圳国际会展中心举办

    上海2022年8月10日 /美通社/ -- 2022年12月14日-16日,上海博华国际展览有限公司将在深圳国际会展中心举办首届博华深圳联展(Connexion ShenZhen),一展打通酒店餐饮. ...

  9. 1. 使用SimpleDateFormat类,把2018-03-04转换为2018年03月04日 2. 用程序判断2018年2月14日是星期几。 3. 键盘录入一个年份,判断这

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...

最新文章

  1. java errorlevel_bat中errorlevel与%errorlevel%的区别
  2. python处理svg 平移 旋转_d3.js封装文本实现自动换行和旋转平移等功能
  3. 360oauth token是什么意思_我在BOSS直聘上都和面试官聊了些什么?
  4. SUN dataset图像数据集下载
  5. 今日arXiv精选 | 31篇EMNLP 2021最新论文
  6. oppo 手机侧滑快捷菜单_关于oppo手机菜单键调出的方法,原来是这样的
  7. 为什么真正的神经元学得更快
  8. RemObjects SDK ThDataSet总结
  9. OpenCL入门程序
  10. 格雷码与二进制之间的转换
  11. 微信公众号支付java_微信公众号支付开发全过程(java版)
  12. Virtual Box 打开.vmdk文件
  13. TGA文件转YUV文件
  14. Gram Matrices理解
  15. 202个DIY及科技网站大集合
  16. java 接口重写_java如何实现接口中的重写
  17. Oracle:ORA-00054 资源正忙
  18. Microsoft Excel 教程:如何在 Excel 中使用 COUNTIF 函数?
  19. 论“正义”——什么是正义?
  20. 数字孪生技术助力高炉数字化建设的可行性

热门文章

  1. matlab的和操作
  2. 设计模式--中介者模式(Mediator)
  3. Cisco ASA ‘LU allocate xlate failed’排错一例
  4. python gzip模块实现文件压缩的方法
  5. vue 使用axios发送的请求使用md5加密
  6. Linux系统启动过程分析 -转
  7. post和php input,PHP“php:/Input”vs$POST
  8. java 模拟 减法 进位_位运算实现加减乘除四则运算(Java)
  9. 蓝桥杯 BASIC-10 基础练习 十进制转十六进制
  10. 蓝桥杯 ADV-9 算法提高 递归倒置字符数组