ThinkPHP开发指南-控制器之前置和后置操作

来自站长百科
跳转至: 导航、​ 搜索

导航:返回上一页

系统会检测当前操作是否具有前置和后置操作,如果存在就会按照顺序执行,例如,我们在UserAction类里面定义了_before_insert() 和 _after_insert() 操作,那么执行User模块的insert操作的时候,会按照顺序执行下面的操作:

_before_insert

insert

_after_insert

特殊情况是,当前的add操作并没有定义操作方法,而是直接渲染模板文件,那么如果定义了_before_add 和 _after_add 方法的话,依然会生效,也会按照这个顺序来执行add操作。真正有模板输出的可能仅仅是当前的add操作,前置和后置操作一般情况是没有任何输出的。前置和后置操作的方法名是在要执行的方法前面加 _before_和_after_,例如:

PHP代码

Class CityAction extends Action{     

public function _before_index() {        

    echo 'before';     

}        

public function index(){        

    echo 'index';        

}        

public function _after_index() {        

    echo 'after';        

}        

} 

执行结果会先输出before 然后输出index 最后输出after。对于任何操作方法我们都可以按照这样的规则来定义前置和后置方法。

需要注意的是,在有些方法里面使用了exit或者错误输出之类的话 有可能不会再执行after后置方法了。