文件目录
闭包方式调用钩子
\application\pub\controller\Upfile.php
namespace app\pub\controller;
use think\Controller; use think\facade\Hook; class Upfile extends Controller { public function index(){ // 可以不用定义行为直接把闭包函数绑定到某个标签位 Hook::add('app_init',function(){ echo '闭包调用'; }); hook::listen('app_init'); } }
\application\pub\behavior\Upfile.php
namespace app\pub\behavior; class Upfile { // 行为逻辑 public function run() { echo "run 入口"; } //方法名就是钩子名称的驼峰命名(首字母小写)。 public function appInit() { echo "初始化"; } }
没有 appInt() 方法时,自动调用 run() 方法。
如果存在 appInt() 方法,只调用appInt() 方法,不调用 run() 方法
闭包里的数据最后调用。
闭包传参调用
\application\pub\controller\Upfile.php
namespace app\pub\controller; use think\Controller; use think\facade\Hook; class Upfile extends Controller { public function index(){ $params = ['username' => 'liaosp']; Hook::add('app_init',function($params){ echo "<br/>".' 闭包输出参数:'.$params['username']; }); Hook::listen('app_init',$params); } }
\application\pub\behavior\Upfile.php
namespace app\pub\behavior; class Upfile { // 行为逻辑 public function run($params) { echo "run 入口输出参数: ".$params['username']; } //方法名就是钩子名称的驼峰命名(首字母小写)。 public function appInit($params) { echo '初始化输出参数:'.$params['username']; } }