thinphp讲解(三)——空操作、空控制器、跨控制器、命名空间

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

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

在tp里面控制器controller.class.php里有个_call()方法

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

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

function _empty()  //解决方案一
	{
		echo "网页不存在,请检查浏览器信息!";
	}

  

②     给空操作的名称制作一个同名的模板出来,系统会自动调用

二、空控制器是指没有找到指定的类

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

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

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

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

三、跨控制器调用

1.跨控制器(在同一模块下)调用操作方法

例:在MainController.class.php的ShuChu()操作方法里调用IndexController.class.php里的shuchu()方法

<?php
namespace Home\Controller;
use Think\Controller;

class MainController extends Controller
{
         function ShuChu()
	{
		//跨控制器(在同一模块下)调用操作方法
		//方式一:造对象
		//$index=new IndexController();
		//echo $index->ShuChu();

		//方式二:使用A方法来造对象
		//$index=A("Index");  //A括号里的参数是  A([模块/]控制器标志)
		//echo $index->ShuChu();

		//方式三:使用R方法:造对象并且调用某个特定方法 R([模块/]控制器标志/操作方法)
		//echo R("Index/ShuChu");
         }
}

2.跨模块调用操作方法

例:在MainController.class.php的ShuChu()操作方法里调用Admin模块下TestController.class.php里的Test()方法  

<?php
namespace Home\Controller;
use Think\Controller;

class MainController extends Controller
{
       function ShuChu()       {
                //跨模块调用
		//A方法
		//$test=A("Admin/Test");
		//echo $test->Test();

		//R方法
		//echo R("Admin/Test/Test");
       }
}

  

四、命名空间

相当于一个虚拟的目录

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

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

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

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

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

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

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

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

时间: 2024-11-23 10:08:47

thinphp讲解(三)——空操作、空控制器、跨控制器、命名空间的相关文章

thinkphp5 的空操作 空控制器 空模块

空操作 空控制器 https://www.kancloud.cn/manual/thinkphp5/118052 空控制器 要在配置文件里面 制定处理错误的 控制器名字 // 更改默认的空控制器名 'empty_controller' => 'MyError', 空模块 关闭调试模式,开启404模板的配置 自己定义模板就可以了 APP_PATH 指的就是 application目录 //404模版定义 'http_exception_template' => [ // // 定义404错误的重

PHP TP空操作空控制器

__双下划线开头,统称为魔术方法 空操作方法1.做empty方法(在子类里写方法) function _empty() { echo "网页不存在,请检查浏览器地址信息"; }2.做默认模板(不好用,可控性差) 空控制器做empty控制器,在里面写empty方法 跨控制器调用1.造对象方法 $index=new IndexController();//这里大小写敏感 echo $index->shuchu();2.使用A方法造对象方法(快捷方法) $index = A("

Thinkphp空操作空模块

空操作和空模块很有实用意义,他有些类似于PHP虚拟机自定义的404页面,利用这个机制我们可以更好的实现URL和错误页面的一些优化. 一.空模块: ?         很好理解,就是当你执行不存在模块的时候,thinkphp会自动寻找该模块,当找不到该模块的时候,Thinkphp会自动定义空模块下的index方法. <?php class EmptyControl?ler extends Controller{ public function index(){ echo '<script>

Thinkphp 空操作、空控制器、命名空间

1.空操作 空操作是指系统在找不到请求的操作方法的时候,会定位到空操作(_empty)方法来执行,利用这个机制,我们可以实现错误页面和一些URL的优化. http://网址/index.php/Home/Main/login http://网址/index.php/Home/Main/hello  空操作 出现页面: 显示的错误信息过于详细,为安全以及优化页面起见,实行空操作 1.做一个_empty()方法.要在子类里面写,不要再父类里(推荐使用) function _empty() { ech

ThinkPHP - 空模块+空操作

空操作 空操作是指系统在找不到指定的操作方法的时候,会定位到空操作(_empty)方法来执行,利用这个机制,我们可以实现错误页面和一些URL的优化. 例如,下面我们用空操作功能来实现一个城市切换的功能.我们只需要给CityAction类定义一个_empty (空操作)方法: <?php class CityAction extends Action{ public function _empty($name){ //把所有城市的操作解析到city方法 $this->city($name); }

Thinkphp入门 二 —空操作、空模块、模块分组、前置操作、后置操作、跨模块调用(46)

原文:Thinkphp入门 二 -空操作.空模块.模块分组.前置操作.后置操作.跨模块调用(46) [空操作处理] 看下列图: 实际情况:我们的User控制器没有hello()这个方法 一个对象去访问这个类不存在的方法,那么它会去访问”魔术方法__call()” 用户访问一个不存在的操作—>解决:给每个控制器都定义个_empty()方法来处理 第二个解决方法:定义一个空操作 [空模块处理] 我们使用一个类,但是现在这个类还没有被include进来. 我们可以通过自动加载机制处理__autoloa

TP框架控制器的空操作

在浏览器中输入tp框架入口文件的地址,如图 要注意,localhost/后面跟的是www的下一级,tp文件的上一级,因为我直接把tp文件做成了www目录的下一级,所以我写的地址localhost后面跟的就是tp 打上目录后回车,就会出来tp的主页面,如图 再随便打上一个没有的操作方法,如 打出的这个页面,暴露了很多信息,不太安全,所以我们要控制住,. 像这种操作本来没有的,叫做空操作 要改变这种,我们可以提供一种方法 从这个目录下找 可以在这个文件中查找双下划线打头的call方法 在这个位置搜到

6月14 空控制器和空操作及命名空间

空操作和空控制器处理 空操作:就没有指定的操作方法 空控制器:没有指定控制器 1.空操作:(Admin是不存在的) 一般网站处于安全考虑不给用户提示任何错误信息 “空操作”本质意思:一个对象(控制器)调用本身不存在的方法 在OOP里边,对象调用本身不存在方法,处于用户体验比较好的角度考虑,我们可以在类里边制作一个魔术方法:function __call(); 在tp里面控制器的父类: 父类中有个方法: 所以空操作有两种解决方案: ①     在对应的控制器里边制作一个方法,名称为”_empty”

TP框架基础 (二) ---空控制器和空操作

通过之前的学习我们知道了index.php是一个入口文件,如果没有这个入口文件的话,我们需要自己创建! [视图模板文件创建] 视图模板文件存放发位置在: 里面没有模板文件 如果我们想要访问Login控制器中的Login方法,首先我们要创建一个Login控制器对应的模板文件夹,该文件夹就对应着Login控制器: 然后在Login文件夹下再创建一个login.html的模板文件来对应Login控制器下的Login方法: 在login.html里面写入要显示的代码: 然后再次请求: [url地址大小写