• php 钩子函数原理 解析


    目前对钩子的理解:<转载:http://www.cnblogs.com/del/archive/2008/02/25/1080825.html>

    譬如我们用鼠标在某个窗口上双击了一次, 或者给某个窗口输入了一个字母 A;
    首先发现这些事件的不是窗口, 而是系统!

    然后系统告诉窗口: 喂! 你让人点了, 并且是连续点了两鼠标, 你准备怎么办?
    或者是系统告诉窗口: 喂! 有人向你家里扔砖头了, 不信你看看, 那块砖头是 A.

    这时窗口的对有些事件会忽略、对有些事件会做出反应:
    譬如, 可能对鼠标单击事件忽略, 窗口想: 你单击我不要紧, 累死你我不负责;
    但一旦谁要双击我, 我会马上行动, 给你点颜色瞧瞧!
    这里窗口准备要采取的行动, 就是我们提前写好的事件.
    用 Windows 的话说, 窗口的事件就是系统发送给窗口的消息; 窗口要采取的行动(事件代码)就是窗口的回调函数.

    但是! 往往隔墙有耳. 系统要通知给窗口的"话"(消息), 可能会被另一个家伙(譬如是一个贼)提前听到!
    有可能这个贼就是专门在这等情报的, 贼知道后, 往往在窗口知道以前就采取了行动!
    并且这个贼对不同的消息会采取不同的行动方案, 它的行动方案一般也是早就准备好的;
    当然这个贼也不是对什么消息都感兴趣, 对不感兴趣的消息也就无须制定相应的行动方案.

    总结: 这个"贼"就是我们要设置的钩子; "贼"的"行动方案"就是钩子函数, 或者叫钩子的回调函数.

    正式开始......

    假如有这么一段程序:

    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(); //执行类的某一个方法
    知识是我们已知的 也是我们未知的 基于已有的知识之上 我们去发现未知的 由此,知识得到扩充 我们获得的知识越多 未知的知识就会更多 因而,知识扩充永无止境
  • 相关阅读:
    Digital image processing In C#
    C#数字图像处理(摘录)
    C# P/Invoke中传递数组参数
    字符常用方法(c#)——(待扩展)
    java监控多个线程的实现
    jdbc访问数据库
    java与MSSQL2000连接
    java下的日期函数实现
    MyEclipse中防止代码格式化时出现换行的情况的设置
    java InputStream读取数据问题
  • 原文地址:https://www.cnblogs.com/timelesszhuang/p/4851715.html
Copyright © 2020-2023  润新知