🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
### 空控制器 当我们访问了一个不存在的控制器就会触发空控制器检查,例如: ~~~ 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