書名: ThinkPHP實(shí)戰(zhàn)作者名: 夏磊本章字?jǐn)?shù): 289字更新時(shí)間: 2020-11-28 18:26:53
4.2 前置操作和后置操作
試想這么一種場(chǎng)景,有一個(gè)控制器方法是需要很高的審計(jì)安全級(jí)別的(比如提現(xiàn)系統(tǒng)中的提現(xiàn)操作),這時(shí)候?qū)@種操作需要完整的日志記錄。一般的做法是在該方法體前面和后面增加日志寫入代碼。但是該方式不利于項(xiàng)目解耦,畢竟日志記錄不是提現(xiàn)邏輯,而是審計(jì)邏輯,此時(shí)ThinkPHP提供的“前置操作和后置操作”可以實(shí)現(xiàn)該需求。
前置操作和后置操作是“可選”的,如果存在則自動(dòng)調(diào)用,定義方式如下,編輯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'; } }
在瀏覽器中訪問(wèn)http://localhost/thinkphp-inaction/chapter-4/home/index,瀏覽器會(huì)輸出“beforeindexafter”,證明系統(tǒng)按照順序調(diào)用了相應(yīng)方法。
推薦閱讀
- Java多線程編程實(shí)戰(zhàn)指南:設(shè)計(jì)模式篇(第2版)
- Design Principles for Process:driven Architectures Using Oracle BPM and SOA Suite 12c
- Oracle Exadata性能優(yōu)化
- JavaScript:Functional Programming for JavaScript Developers
- 華為HMS生態(tài)與應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)
- Learn React with TypeScript 3
- Learning FuelPHP for Effective PHP Development
- Java程序設(shè)計(jì)入門
- 低代碼平臺(tái)開(kāi)發(fā)實(shí)踐:基于React
- 從零開(kāi)始學(xué)C#
- Unity 2018 Augmented Reality Projects
- Python Interviews
- 零基礎(chǔ)學(xué)HTML+CSS
- scikit-learn Cookbook(Second Edition)
- Angular Design Patterns