php钩子是啥意思,PHP钩子是什么意思?
钩子是一种事件驱动的消息处理机制,作用可以截获并处理其它应用程序的消息,每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。
钩子实现
钩子的完整实现应该叫事件驱动。事件驱动分为两个阶段,第一个阶段是注册事件,目的是给未来可能发生的“事件”起一个名字,简单的实现方法是
用单例模式产生一个持久的对象或者注册一个全局变量,然后将事件名称,以及该事件对应的类与方法插入全局变量即可。也就是挂载一个钩子。
第二个阶段是触发事件,本质上就是在事件的全局变量中查询要触发的事件名称,然后找到注册好的类与方法,实例化并运行。这样子就可以摆
脱传统方式中程序必须按顺序的规则,进一步实现解除耦合的目的。
代码示例一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钩子是什么意思?相关推荐
- php钩子函数示例,PHP中钩子函数的实现与认识
假如有这么一段程序: function fun(){ fun1(); fun2(); } 首先程序执行完fun1()之后执行fun2()然后fun()结束. 但是,假如我们想对函数做一些变化.比如说, ...
- vue路由跳转子组件_vue-router之路由钩子(组件内路由钩子必须在路由组件调用,子组件没用)...
模式 vue-router中的模式选项主要在router实例化的时候进行定义的,如下 const router = new VueRouter({ mode: 'history', // 两种类型hi ...
- C语言回调函数 钩子函数,回调函数和钩子函数的说明
回调函数:数据结构 回调函数是应用程序提供给Windows系统DLL或其它DLL调用的函数,通常用于截获消息.获取系统信息或处理异步事件.应用程序把回调函数的地址指针告诉DLL,而DLL在适当的时候会 ...
- c语言中的钩子函数,回调函数以及钩子函数的概念
钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统.每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权.这时钩子函数即可以加工处理(改变)该消息,也可 ...
- before vue路由钩子_vue组件级路由钩子函数介绍,及实际应用
正如其名,vue-router 提供的导航钩子主要用来拦截导航,让它完成跳转或取消. 有多种方式可以在路由导航发生时执行钩子:全局的.单个路由独享的.或者组件级的. 一.全局钩子 你可以使用 rout ...
- react钩子_迷上了钩子:如何使用React的useReducer()
react钩子 So the React Conference just happened and as always something new happened. Hooks happened! ...
- java中钩子函数回调函数_钩子函数 和回调函数
标签: http://blog.csdn.net/lipeionline/article/details/6369657 转自 也可以这样,更容易理解:回调函数就好像是一个中断处理函数,系统在符合你 ...
- php钩子是啥意思,thinkphp钩子是什么意思
首先,钩子是一种触发机制,如同一个陷阱,当程序运行到某个地方时就会触发这个陷阱,然后执行这个Hook,执行完成后,系统根据执行的不同结果继续进行. 那么,thinkphp钩子(Hook)机制的原理是什 ...
- mounted钩子函数_vue中created钩子函数与mounted钩子函数的使用区别
1:在使用vue框架的过程中,我们经常需要给一些数据做一些初始化处理,这时候我们常用的就是在created与mounted选项中作出处理. 首先来看下官方解释,官方解释说created是在实例创建完成 ...
- VC++钩子使用之全局键盘钩子
文章目录 钩子简介 使用钩子 生成KeyHook.dll 加载KeyHook.dll 窗体接收两次按键消息的问题 参考 如果想要在Win32窗体程序中实现按键捕获,可以覆写PreTranslateMe ...
最新文章
- 零基础学caffe源码 ReLU激活函数
- 全球及中国健康保险市场运作模式与需求潜力预测报告2022版
- bash问题引起的centos系统不能启动
- golang 并发demo 写入 redis
- [蓝桥杯][算法提高VIP]摆花-多重背包计数问题
- JavaFX官方教程(十)之转换类型和示例
- redis——HyperLogLog
- idea插件开发(01)---最简单的helloworld版,不需要知道原理,先跟我做一个最简单的弹框插件
- 阿里巴巴大数据实践—实时技术
- java fastjson 泛型_解决fastjson泛型转换报错的解决方法
- php mysql循环语句怎么写_mysql数据库循环语句该怎么写???
- delphi IOS 通知 TNotification
- [转载] numpy.reshape用法(自用)
- 【福利】本人自学深度学习的300G的学习资料愿与大家分享!一起进步!
- 元气开工!这里有一份礼包待领取
- 网站建设如何选择CMS网站系统
- 好用的 edge 插件有哪些?
- 老九门略--盗墓笔记老九门是哪九门(后附最新老九门电视剧百度云地址--不时更新)
- Arduino - 看门狗定时器(WDT:Watch Dog Timer)
- c++builder:Project Project1.exe raised exception class EAccessViolation with message 'Access violati