初始化操作:初始化就是访问控制器的任何方法之前都要执行的某个方法叫初始化操作。
代码如下:
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller{
// 初始化方法
public function _initialize(){
echo 'initialize<br/ >';
}
public function index(){
echo 'index';
}
public function hello(){
echo 'hello';
}
}
如果我们访问 http://serverName/index.php/ Home/index
结果会输出
initialize
index
如果我们访问 http://serverName/index.php/ Home/ hello
结果会输出
initialize
hello
可以看出 ,无论是执行index操作还是hello操作 都会首先执行 _initialize 操作方法。
如果把 _initialize 操作方法定义到一个公共的控制器类里的话 ,那么所有的控制器操作方法之前都会执行 前置后置操作:_initialize 方法是调用所有操作方法之前都会执行 ,前置和后缀操作则是针对某个特定的操作方法而言。
如果当前访问的操作是存在 (必须是实际在控制器中定义过 )的 ,系统会检测当前操作是否具有前置和后置操作 ,如果存在就会按照顺序执行 ,前置和后置操作的方法名是在要执行的方法前。
代码如下:
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller{
//前置操作方法
public function _before_index(){
echo 'before<br/ >';
}
public function index(){
echo 'index <br/ >';
}
//后置操作方法
public function _after_index(){
echo 'after';
}
}
如果我们访问 http://serverName/index.php
结果会输出
before
index
after
对于任何操作方法我们都可以按照这样的规则来定义前置和后置方法。
如果在操作方法里使用了exit或者error方法的话 有可能不会再执行后置方法了