php 钩子函数原理 解析

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

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

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

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

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

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

正式开始......函数

假若有这么一段程序:spa

function fun(){
fun1();
fun2();
}

首先程序执行完fun1()以后执行fun2()而后fun()结束。code

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

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

例如:事件

$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(); //执行类的某一个方法

 

知识是咱们已知的 也是咱们未知的 基于已有的知识之上 咱们去发现未知的 由此,知识获得扩充 咱们得到的知识越多 未知的知识就会更多 于是,知识扩充永无止境
相关文章
相关标签/搜索