### 空控制器
当我们访问了一个不存在的控制器就会触发空控制器检查,例如:
~~~
http://tp5.com/index/test/hello
~~~
访问的应该是index模块的Test控制器的hello操作方法,但我们并没有定义Test控制器类,那么很显然,会抛出异常页面,在抛出该异常之前,系统其实会进行一次内置的检查:是否有定义空控制器。
默认的空控制器类由下面的配置参数定义:
~~~
// 默认的空控制器名
'empty_controller' => 'Error',
~~~
因此,我们只需要定义一个Error控制器就可以对所有不存在的控制器访问进行拦截。
好,我们定义一个`Error`控制器,代码如下:
~~~
<?php
namespace app\index\controller;
class Error
{
public function hello()
{
return 'hello';
}
}
~~~
现在访问: `http://tp5.com/index/test/hello`
> 页面会输出显示:hello
不过,由于Error控制器只有一个hello方法,因此访问hello之外的其它方法都会报类似下面的方法不存在的错误,如果需要拦截所有方法,需要给空控制器定义一个空操作(_empty)方法
~~~
<?php
namespace app\index\controller;
class Error
{
public function _empty($method)
{
return '当前操作名:' . $method;
}
}
~~~
现在访问:`http://tp5.com/index/test/miss`
> 页面会输出显示:当前操作名:miss