假如有这么一段程序:
function fun(){
fun1();
fun2();
}
首先程序执行完fun1()之后执行fun2()然后fun()结束。
但是,假如我们想对函数做一些变化。比如说,fun是一个解析函数,我们希望后期可以提供丰富的解析函数,而究竟用哪个函数解析,我们希望在配置文件中配置。这个时候就可以发挥钩子的力量了。
我们可以在function fun(){}中加入一个挂钩点H,然后再执行H这个函数之前,将钩子函数配置好,我么就可以根据需要来解析了。
例如:
$h=config_item("parser_fun");//从配置文件中获得相应的配置信息
function fun($data){
global $h;
return $h();
}
除此意外,PHP还可以根据字符串提供自己的类,然后调用类的一个方法,传递某些参数,这些就为PHP程序的编写,以及后期的维护扩展奠定了,相当坚实的基础。
$c=get_class_name();//获得类的名字
$m=get_method_name();//获得方法的名字
$k=$c->$m();//执行类的某一个方法
原文链接:PHP中钩子函数&实现
- 1、钩子函数是预设并在特定的条件下触发的。
- 2、钩子函数接管程序后可以影响到程序的走向。
钩子的完整实现应该叫事件驱动。事件驱动分为两个阶段,第一个阶段是注册事件,目的是给未来可能发生的“事件”起一个名字,简单的实现方法是用单例模式产生一个持久的对象或者注册一个全局变量,然后将事件名称,以及该事件对应的类与方法插入全局变量即可。也就是挂载一个钩子。
第二个阶段是触发事件,本质上就是在事件的全局变量中查询要触发的事件名称,然后找到注册好的类与方法,实例化并运行。这样子就可以摆脱传统方式中程序必须按顺序的规则,进一步实现解除耦合的目的。
钩子函数可以截获并处理其他应用程序的消息。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。
相关推荐
一个以C语言钩子函数来实现鼠标操作的demo
vue-router钩子函数实现路由守卫 目录 概述全局钩子函数路由独享的钩子函数组件内的钩子函数 概述 全局钩子函数 路由独享的钩子函数 组件内的钩子函数 概述 何为路由守卫?路由守卫有点类似于ajax的请求...
c++钩子函数:copy hook c++调用钩子函数监视复制文件操作
初步了解钩子函数的功能,应用,轻松快捷的掌握钩子的用法
钩子函数的简单使用 代码 入门级别的程序
钩子函数实现的屏幕取词源代码;钩子函数实现的屏幕取词源代码
1、实现屏蔽键盘输入 2、抓取键盘上任意输入内容 3、替换键盘输入内容 4、保存到本地
dephi钩子函数实例源码,鼠标键盘钩子
本代码包含dll与钩子函数的详细教程,通俗易懂,相信读者会受益匪浅。
FreeRTOS实验 FreeRTOS空闲任务钩子函数实验
钩子函数的使用.pdf
消息钩子函数入门篇,自己看看是不适合需要!初级篇,
钩子函数调用实例,将钩子函数插入桌面进程中,用于每次修改分辨率前保持桌面进程每个桌面图标的位置
利用钩子函数,截获任何弹出的消息框MessageBox 截获所有弹出的消息框
这是一个网上找到的用来学习回调函数和介绍钩子函数的文档,供大家免费分享
通过代码实例讲解钩子函数的用法,setwindowshook等
钩子函数大全,中文解释!翻译的很详细,很好!
这个利用 钩子函数监听鼠标和键盘时间的例子
编写钩子程序的步骤分为三步:定义钩子函数、安装钩子和卸载钩子。 1.定义钩子函数 钩子函数是一种特殊的回调函数。钩子监视的特定事件发生后,系统会调用钩子函数进行处理。不同事件的钩子函数的形式是各不...