[ThinkPHP]Action中前后置方法的实现

tp里不仅在Model层加入了前后置方法,在Action层也能找到它们的踪迹。

如果我写一个UserAction.class.php,我可以为它里面的每一个方法都加上前后置的处理:

1
2
3
4
5
public function _before_index(){//code is here}
public function index{
//code is here
}
public fnnction _after_index(){//code is here}

Model类是直接在需的方法里添加的,而我们的Action类似乎并没有这样的意思。

回想一下tp的启动过程就可以明了了:加载配置->路由->实例化Action。

对,就是在路由后,实例化Action的方法时,判断是否有前后置方法,并一同实例化(App::exec):

1
2
3
4
5
6
7
8
9
10
if (method_exists($module,'_before_'.$action)) {
// 执行前置操作
call_user_func(array(&$module,'_before_'.$action));
}
//执行当前操作
call_user_func(array(&$module,$action));
if (method_exists($module,'_after_'.$action)) {
// 执行后缀操作
call_user_func(array(&$module,'_after_'.$action));
}
坚持原创技术分享,您的支持将鼓励我继续创作!