PHP中钩子函数的实现与认识
2024-10-20 06:32:49
PHP中钩子函数的实现与认识
假如有这么一段程序:
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、钩子函数接管程序后可以影响到程序的走向。
钩子的完整实现应该叫事件驱动。事件驱动分为两个阶段,第一个阶段是注册事件,目的是给未来可能发生的“事件”起一个名字,简单的实现方法 是用单例模式产生一个持久的对象或者注册一个全局变量,然后将事件名称,以及该事件对应的类与方法插入全局变量即可。也就是挂载一个钩子。
第二个阶段是触发事件,本质上就是在事件的全局变量中查询要触发的事件名称,然后找到注册好的类与方法,实例化并运行。这样子就可以摆脱传统方式中程序必须按顺序的规则,进一步实现解除耦合的目的。
钩子函数可以截获并处理其他应用程序的消息。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。
用户昵称:
电子邮箱:
个人网站:
最新文章
- SSH输入错误Action
- Sqlserver 函数
- 说说设计模式~建造者模式(Builder)
- js每天进步一点点4
- android 九宫加密记事本
- SuSE Apache2 VirtualHost Build
- 关于DIPS的MVC 4.0项目发布与在IIS 7.0上的部署的方法
- poj1860(spfa判正环)
- hdu 4472 dp
- CSS的三种手段让元素脱离标准本文档流——浮动、绝对定位、固定定位
- webots自学笔记(一)软件界面和简单模型仿真
- linux最常用的基本命令
- 安装python caffe过程中遇到的一些问题以及对应的解决方案
- (一)helloworld
- node的consoidate的插件统一
- 修改覆盖springboot默认日志策略logback
- [Algorithm] Calculate Pow(x,n) using recursion
- jsp 静态引入<;%@ include %>; 动态引入<;jsp:include>; 区别
- 使用Java开发微信公众平台(二)——消息的接收与响应
- Windows下python 安装Mysqldb模块