zoukankan      html  css  js  c++  java
  • PHP中钩子函数的实现与认识

    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、钩子函数接管程序后可以影响到程序的走向。

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

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

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



     

  • 相关阅读:
    The required MAP capability is more than the supported max container capability in the cluster. Killing the Job. mapResourceRequest: <memory:2048, vCores:2> maxContainerCapability:<memory:1024, vCores
    centos6.8安装cdh6.0.0
    oracle拼接sql
    数据插入不覆盖更新,设置定时任务
    支持向量机在 R 语言中的实现和使用
    怎么彻底去掉office365
    汽车电子软件规范学习
    ISO/IEC TS 17961 C Secure Coding Rules
    UML图
    Gitflow工作流程
  • 原文地址:https://www.cnblogs.com/hellowzd/p/4450385.html
Copyright © 2011-2022 走看看