php 鉤子函數原理 解析

來源:互聯網
上載者:User

標籤:

目前對鉤子的理解:<轉載: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(); //執行類的某一個方法

php 鉤子函數原理 解析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.