使用tp5中的空操作_empty,以避免创建过多的无用控制器和方法
空操作是指系统在找不到指定的操作方法的时候,会定位到空操作(
_empty
)方法来执行,利用这个机制,我们可以实现错误页面和一些URL的优化。
这是官方文档对空操作的描述,根据官方文档中的案例可以稍稍改进一下
<?php namespace app\index\controller; use library\Controller; /** * 基类控制器 */ class Base extends Controller { /** * 空操作 用于显示错误页面 */ public function _empty($name){ return $this->fetch($name); } }
这样就无需为了新增的模板文件创建额外的方法去渲染了,这样就能在前后端分离的道路上得更远。如果想更简洁一点,甚至可以定义一个空控制器,在空控制器里添加空操作的代码。这样就完全摆脱的控制器的限制,只要有模板文件就能显示。
这样虽然代码简洁,但是却有点本末倒置的感觉。不过这也是工作中的一点小发现而已,也不是什么发现都能派的上用场的。废话少说,上代码
<?php namespace app\index\controller; use think\Request; use library\Controller; /** *空控制器 */ class Error extends Controller { public function _empty($name) { return $this->fetch($name); } }
还可以到配置文件中定义空控制器的名字
'empty_controller' => 'MyError',