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(); //執行類的某一個方法

 

知識是咱們已知的 也是咱們未知的 基於已有的知識之上 咱們去發現未知的 由此,知識獲得擴充 咱們得到的知識越多 未知的知識就會更多 於是,知識擴充永無止境
相關文章
相關標籤/搜索