### 空控制器
當我們訪問了一個不存在的控制器就會觸發空控制器檢查,例如:
~~~
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