博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
6月14 空控制器和空操作及命名空间
阅读量:4325 次
发布时间:2019-06-06

本文共 2166 字,大约阅读时间需要 7 分钟。

空操作和空控制器处理

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

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

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

 

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

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

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

 

在tp里面控制器的父类:

父类中有个方法:

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

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

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

"; } 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()方法即可。

 现在的运行结果:

 

 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

现在想要在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

你可能感兴趣的文章
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-4.动态Sql语句Mybaties SqlProvider...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_4-1.单机和分布式应用的登录检验讲解...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_4-3.登录检验JWT实战之封装通用方法...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-2.使用Mybatis注解开发视频列表增删改查...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-2.微信扫一扫功能开发前期准备...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-3.Vidoe相关接口完善和规范协议...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-3.微信Oauth2.0交互流程讲解...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_3-5.PageHelper分页插件使用
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-6.微信扫码登录回调本地域名映射工具Ngrock...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_4-2.微服务下登录检验解决方案 JWT讲解...
查看>>
小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_5-8.用户模块开发之保存微信用户信息...
查看>>
HDU 5353 Average
查看>>
进程和计划管理
查看>>
MQ_ActiveMQ环境部署+C#推送和接收消息
查看>>
Ubuntu16.04上使用Anaconda3的Python3.6的pip安装UWSGI报错解决办法
查看>>
学习笔记11.6
查看>>
高效中的细节注意
查看>>
MySQL 之 库操作
查看>>
Python 最抢手、Java 最流行,前线程序员揭秘 2019 软件开发现状
查看>>
R语言(一)
查看>>