ThinkPHP实战
上QQ阅读APP看书,第一时间看更新

4.2 前置操作和后置操作

试想这么一种场景,有一个控制器方法是需要很高的审计安全级别的(比如提现系统中的提现操作),这时候对这种操作需要完整的日志记录。一般的做法是在该方法体前面和后面增加日志写入代码。但是该方式不利于项目解耦,毕竟日志记录不是提现逻辑,而是审计逻辑,此时ThinkPHP提供的“前置操作和后置操作”可以实现该需求。

前置操作和后置操作是“可选”的,如果存在则自动调用,定义方式如下,编辑Application/Home/Conf/config.php,代码如下:

        return array(
        //  'ACTION_SUFFIX' => 'Action', // 操作方法后缀
        );

编辑Application/Home/Controller/IndexController.class.php,代码如下:

        <? php
        namespace Home\Controller;
        use Think\Controller;
        class IndexController extends Controller
        {
        public function _before_index()
        {
            echo 'before';
        }
        public function index()
        {
            echo 'index';
        }
        public function _after_index()
        {
            echo 'after';
        }
        }

在浏览器中访问http://localhost/thinkphp-inaction/chapter-4/home/index,浏览器会输出“beforeindexafter”,证明系统按照顺序调用了相应方法。