PHP 中Hook的理解
2020-02-23 本文已影响0人
bianruifeng
Hook 的原理 相当于一个工厂方法;
Hook
是工厂;
controller
相当于甲方;
behavior
行为相当于需求(比如:发送短信,插入数据,日志文件等等)
tags
相当于 工厂的生产日程、任务清单,生产经理。
现在甲方爸爸来了
因为甲方想打架,但是又不想学武功,所以要雇人打架,于是找到了工厂Hook。(给自己添加技能,又不占用空间,雇人干活)
$result = Hook::listen('task1', $params, null, true);
task1
就是打架的任务,params
就是打架需要的参数。
result
就是打架的结果,即执行task1
返回的结果。
厂长把任务分配给tags 生产经理,经理一看任务清单
return [
// 视图内容过滤
'task1' => [
'app\\common\\behavior\\user1',
'app\\common\\behavior\\ user2',
],
];
清单上有task1的生产任务,并且明确的指出了能打架的拳击手是谁「'app\\common\\behavior\\ user1',
」,于是user1 去打了一架。
甲方问能不能造替考试??
于是厂长去查任务清单。
if (Hook::get('task1')) {
echo '可以替考';
}
但是生产清单里没有task2
任务,于是直接找找到厂长去注册了task2
任务。
Hook::add("task2","\\app\\index\\hook\\Test");//注册钩子
$result = Hook::listen('task2', $sms, null, true);//执行