钩子是一种事件驱动的消息处理机制,作用可以截获并处理其它应用程序的消息,每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。

钩子实现

钩子的完整实现应该叫事件驱动。事件驱动分为两个阶段,第一个阶段是注册事件,目的是给未来可能发生的“事件”起一个名字,简单的实现方法是

用单例模式产生一个持久的对象或者注册一个全局变量,然后将事件名称,以及该事件对应的类与方法插入全局变量即可。也就是挂载一个钩子。

第二个阶段是触发事件,本质上就是在事件的全局变量中查询要触发的事件名称,然后找到注册好的类与方法,实例化并运行。这样子就可以摆

脱传统方式中程序必须按顺序的规则,进一步实现解除耦合的目的。

代码示例一class Ball{

public function down(){

echo "ball is downing ";

//注册事件

Hook::add("man");

Hook::add("Women");

}

public function do(){

Hook::exec();

}

}

// 钩子的定义

class Hook{

private $hooklist = null ;

// 添加

public function add($people){

$this->hooklist[] = new $people();

}

// 触发事件

public function exec(){

foreach($this->hooklist as $people){

$addon ->act();

}

}

}

// 钩子实现

class man(){

public function act(){

echo 'notiong';

}

}

class WoMan(){

public function act(){

echo 'oh my god ';

}

}

class child(){

public function act(){

echo 'oh my god ';

}

}

$ball = new Ball();

$ball ->down();

$ball ->do();

代码示例二// 如果需要添加小孩,就可以做添加一个小孩Hook::add("child");

/*=========================钩子的升级版============================================/*

class Hook{

private $hookList;

//添加

function add($name,$fun){

$this->hookList[$name][] = $fun;

}

function excec($name){

$value = func_get_args();

unset($value[0]);

foreach ($this->hookList[$name] as $key => $fun) {

call_user_func_array($fun, $value);

}

}

}

$hook = new Hook();

$hook->add('women',function($msg){

echo 'oh my god'.$msg ;

})

$hook->add('man',function($msg){

echo 'nothing'.$msg ;

})

// 执行

$hook->excec('man','taoge');

$hook->excec('women','xxx');

推荐教程:《PHP》

php钩子是啥意思,PHP钩子是什么意思?相关推荐

  1. php钩子函数示例,PHP中钩子函数的实现与认识

    假如有这么一段程序: function fun(){ fun1(); fun2(); } 首先程序执行完fun1()之后执行fun2()然后fun()结束. 但是,假如我们想对函数做一些变化.比如说, ...

  2. vue路由跳转子组件_vue-router之路由钩子(组件内路由钩子必须在路由组件调用,子组件没用)...

    模式 vue-router中的模式选项主要在router实例化的时候进行定义的,如下 const router = new VueRouter({ mode: 'history', // 两种类型hi ...

  3. C语言回调函数 钩子函数,回调函数和钩子函数的说明

    回调函数:数据结构 回调函数是应用程序提供给Windows系统DLL或其它DLL调用的函数,通常用于截获消息.获取系统信息或处理异步事件.应用程序把回调函数的地址指针告诉DLL,而DLL在适当的时候会 ...

  4. c语言中的钩子函数,回调函数以及钩子函数的概念

    钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统.每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权.这时钩子函数即可以加工处理(改变)该消息,也可 ...

  5. before vue路由钩子_vue组件级路由钩子函数介绍,及实际应用

    正如其名,vue-router 提供的导航钩子主要用来拦截导航,让它完成跳转或取消. 有多种方式可以在路由导航发生时执行钩子:全局的.单个路由独享的.或者组件级的. 一.全局钩子 你可以使用 rout ...

  6. react钩子_迷上了钩子:如何使用React的useReducer()

    react钩子 So the React Conference just happened and as always something new happened. Hooks happened! ...

  7. java中钩子函数回调函数_钩子函数 和回调函数

    标签: http://blog.csdn.net/lipeionline/article/details/6369657  转自 也可以这样,更容易理解:回调函数就好像是一个中断处理函数,系统在符合你 ...

  8. php钩子是啥意思,thinkphp钩子是什么意思

    首先,钩子是一种触发机制,如同一个陷阱,当程序运行到某个地方时就会触发这个陷阱,然后执行这个Hook,执行完成后,系统根据执行的不同结果继续进行. 那么,thinkphp钩子(Hook)机制的原理是什 ...

  9. mounted钩子函数_vue中created钩子函数与mounted钩子函数的使用区别

    1:在使用vue框架的过程中,我们经常需要给一些数据做一些初始化处理,这时候我们常用的就是在created与mounted选项中作出处理. 首先来看下官方解释,官方解释说created是在实例创建完成 ...

  10. VC++钩子使用之全局键盘钩子

    文章目录 钩子简介 使用钩子 生成KeyHook.dll 加载KeyHook.dll 窗体接收两次按键消息的问题 参考 如果想要在Win32窗体程序中实现按键捕获,可以覆写PreTranslateMe ...

最新文章

  1. 零基础学caffe源码 ReLU激活函数
  2. 全球及中国健康保险市场运作模式与需求潜力预测报告2022版
  3. bash问题引起的centos系统不能启动
  4. golang 并发demo 写入 redis
  5. [蓝桥杯][算法提高VIP]摆花-多重背包计数问题
  6. JavaFX官方教程(十)之转换类型和示例
  7. redis——HyperLogLog
  8. idea插件开发(01)---最简单的helloworld版,不需要知道原理,先跟我做一个最简单的弹框插件
  9. 阿里巴巴大数据实践—实时技术
  10. java fastjson 泛型_解决fastjson泛型转换报错的解决方法
  11. php mysql循环语句怎么写_mysql数据库循环语句该怎么写???
  12. delphi IOS 通知 TNotification
  13. [转载] numpy.reshape用法(自用)
  14. 【福利】本人自学深度学习的300G的学习资料愿与大家分享!一起进步!
  15. 元气开工!这里有一份礼包待领取
  16. 网站建设如何选择CMS网站系统
  17. 好用的 edge 插件有哪些?
  18. 老九门略--盗墓笔记老九门是哪九门(后附最新老九门电视剧百度云地址--不时更新)
  19. Arduino - 看门狗定时器(WDT:Watch Dog Timer)
  20. c++builder:Project Project1.exe raised exception class EAccessViolation with message 'Access violati

热门文章

  1. linux奶瓶系统,奶瓶beini 系统从硬盘光盘U盘引导启动
  2. 【180622】VC++仿雷电飞行射击游戏源码包
  3. 百闻不如一见,4款名不见经传的极品软件,让你眼界大开
  4. UE4运行时虚拟纹理教程【RVT】
  5. HGP03调试软件 HGP03板规格表调试软件 能查看电梯运 行状态,代替手编修改规格表地址调试电梯
  6. EXCEL加载项的安装与取消
  7. 1-使用 React 生成 Excel 加载项
  8. DPOS3.0的改进分析
  9. uniapp直播推流、拉流实现
  10. ★商场上的十则寓言故事!