PHP中钩子函数的实现与认识

分类:PHP编程  作者:rming  时间:2014-09-21

假如有这么一段程序:

  1. function fun(){
  2. fun1();
  3. fun2();
  4. }

  首先程序执行完fun1()之后执行fun2()然后fun()结束。

  但是,假如我们想对函数做一些变化。比如说,fun是一个解析函数,我们希望后期可以提供丰富的解析函数,而究竟用哪个函数解析,我们希望在配置文件中配置。这个时候就可以发挥钩子的力量了。

  我们可以在function fun(){}中加入一个挂钩点H,然后再执行H这个函数之前,将钩子函数配置好,我么就可以根据需要来解析了。

例如:

  1. $h=config_item("parser_fun") ;//从配置文件中获得相应的配置信息
  2. function fun($data){
  3. global $h;
  4. return $h();
  5. }

  除此意外,PHP还可以根据字符串提供自己的类,然后调用类的一个方法,传递某些参数,这些就为PHP程序的编写,以及后期的维护扩展奠定了,相当坚实的基础。

  1. $c=get_class_name(); //获得类的名字
  2. $m=get_method_name(); //获得方法的名字
  3. $k=$c->$m(); //执行类的某一个方法

原文链接:PHP中钩子函数&实现


  • 1、钩子函数是预设并在特定的条件下触发的。
  • 2、钩子函数接管程序后可以影响到程序的走向。

  钩子的完整实现应该叫事件驱动。事件驱动分为两个阶段,第一个阶段是注册事件,目的是给未来可能发生的“事件”起一个名字,简单的实现方法 是用单例模式产生一个持久的对象或者注册一个全局变量,然后将事件名称,以及该事件对应的类与方法插入全局变量即可。也就是挂载一个钩子。

  第二个阶段是触发事件,本质上就是在事件的全局变量中查询要触发的事件名称,然后找到注册好的类与方法,实例化并运行。这样子就可以摆脱传统方式中程序必须按顺序的规则,进一步实现解除耦合的目的。

  钩子函数可以截获并处理其他应用程序的消息。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。



 

用户昵称:

电子邮箱:

个人网站:

最新文章

  1. SSH输入错误Action
  2. Sqlserver 函数
  3. 说说设计模式~建造者模式(Builder)
  4. js每天进步一点点4
  5. android 九宫加密记事本
  6. SuSE Apache2 VirtualHost Build
  7. 关于DIPS的MVC 4.0项目发布与在IIS 7.0上的部署的方法
  8. poj1860(spfa判正环)
  9. hdu 4472 dp
  10. CSS的三种手段让元素脱离标准本文档流——浮动、绝对定位、固定定位
  11. webots自学笔记(一)软件界面和简单模型仿真
  12. linux最常用的基本命令
  13. 安装python caffe过程中遇到的一些问题以及对应的解决方案
  14. (一)helloworld
  15. node的consoidate的插件统一
  16. 修改覆盖springboot默认日志策略logback
  17. [Algorithm] Calculate Pow(x,n) using recursion
  18. jsp 静态引入<%@ include %> 动态引入<jsp:include> 区别
  19. 使用Java开发微信公众平台(二)——消息的接收与响应
  20. Windows下python 安装Mysqldb模块

热门文章

  1. 镜像上传和Dockerfile
  2. Android 内存泄漏分析利器——leakcanary
  3. canvas贝济埃曲线
  4. lucene 分词器
  5. 设置SSH编码为中文
  6. Android权限说明 system权限 root权限
  7. C#音视频网络流解码:H264视频和ACC音频
  8. 各种MQTT server功能比較
  9. Markdown进阶指南
  10. JNI调用实例