thinphp讲解——空操作空控制器跨控制器命名空间

Posted 坏小子之涛声依旧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);

 

以上是关于thinphp讲解——空操作空控制器跨控制器命名空间的主要内容,如果未能解决你的问题,请参考以下文章

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

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

PHP TP空操作空控制器

6月14日 空操作 命名空间 视图

ThinPHP命名空间,连接数据库是要修改的配置文件,Model数据模型层,跨控制器调用,如何获取系统常量信息,

空操作和空控制器