【空操作和空控制器使用】
学习空操作和空控制器的原因:
用户在访问控制器的时候,空操作会让网站提供一些错误的信息,处于安全考虑不给用户提示任何错误信息,防范黑客对网址进行攻击
空操作:就没有指定的操作方法
空控制器:没有指定控制器
http://网址/index.php/Home/User/login
http://网址/index.php/Home/User/hello 空操作
http://网址/index.php/Home/beijing/login 空控制器
空操作:
一般网站处于安全考虑不给用户提示任何错误信息
“空操作”本质意思:一个对象(控制器)调用本身不存在的方法
在OOP里边,对象调用本身不存在方法,处于用户体验比较好的角度考虑,我们可以在类里边制作一个魔术方法:function __call();
普通控制器父类的位置://Controller父类:TinkPHP/Library/Think/Controller.class.php
在这个function __call()中,它先去找一下当前控制器的对象,然后查找相应的方法
接着它会判断是否存在模板,如果有模板的话,它会输出模板。模板在view目录下
空操作有两种解决方案:
① 在对应的控制器里边制作一个方法,名称为”_empty”,这个控制器的空操作都会自动执行该方法。(推荐使用)
可以在自己的控制器类中定义自己的_empty函数的内容
② 给空操作的名称制作一个同名的模板出来,系统会自动调用(不推荐使用,因为每次空操作的方法的名称都不一样,不可能一一去创建名称不一样的模板)
【空控制器】
http://网址/index.php/Home/tianjin/login
空控制器:在实例化控制器对象的时候,没有找到指定的类
什么时候实例化控制器对象: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的控制器,在里面定义一个function _empty()函数,输出在用户在空控制器操作的时候,自己想输出的内容。
空控制器处理方案:可以再制作一个控制器,名称EmptyController.class.php
在该控制器内部其实只需要制作一个_empty()方法即可。(这里注意一下命名空间的引入)