一、“空操作”本质意思:一个对象(控制器)调用本身不存在的操作方法
一般网站处于安全考虑不给用户提示任何错误信息
在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);