所谓的空操作就是指当形同找不到请求的操作方法时,就调用这个空操作:
<?php
namespace Home\Controller;
use Think\Controller;
class CityController extends Controller{
public function _empty($name){
//把所有城市的操作解析到city方法
$this->city($name);
}
//注意 city方法 本身是 protected 方法
protected function city($name){
//和$name这个城市相关的处理
echo '当前城市' . $name;
}
}
当我们在浏览器里输入http://localhost/index.php/Home/City/beijing;
City控制器里并没有定义beijing方法,但输出结果是当前城市:beijng;
原因就是当系统找不到定义的方法时调用了_empty();方法;
如果我们在_empty()里对操作名进行判断然后进行相应的操作,这样就可以缩短url地址
同理空控制器是指当系统找不到请求的控制器名称的时候,系统会尝试定位空控制器
<?php
namespace Home\Controller;
use Think\Controller;
class EmptyController extends Controller{
public function _empty(){
//根据当前控制器名来判断要执行那个城市的操作
$cityName = CONTROLLER_NAME;
$this->city($cityName);
}
//注意 city方法 本身是 protected 方法
protected function city($name){
//和$name这个城市相关的处理
echo '当前城市' . $name;
}
这样我们就可在浏览器里输入
http://localhost/index.php/Home/beijing
这样大大简化了url;并且减少了代码