为什么我们写的东西自己测试的时候没问题,但是一交付给客户使用就会弱不经风,因为鬼知道客户会输入一些什么。所以怎么让我们写的东西容错性更强,是一个不得不思考的问题。
Thinkphp5设计的空控制器和空操作方法很好的弥补了这个问题。
空控制器的概念是指当系统找不到指定的控制器名称的时候,系统会尝试定位空控制器(Error),利用这个机制我们可以用来定制错误页面和进行URL的优化。
空操作是指系统在找不到指定的操作方法的时候,会定位到空操作(_empty)方法来执行,利用这个机制,我们可以实现错误页面和一些URL的优化。
Thinkphp5空控制器示例
//这个Error的名称可以在配置文件中自己定义
class Error
{
public function index(Request $request)
{
//根据当前控制器名来判断要执行那个城市的操作
$cityName = $request->controller();
return $this->city($cityName);
}
//注意 city方法 本身是 protected 方法
protected function city($name)
{
//和$name这个城市相关的处理
return '当前城市' . $name;
}
}
// 更改默认的空控制器名
'empty_controller' => 'MyError',