PHP中鉤子函式的實現與認識

2021-09-02 09:17:08 字數 1202 閱讀 8602

假如有這麼一段程式:

function

fun()

首先程式執行完fun1()之後執行fun2()然後fun()結束。

但是,假如我們想對函式做一些變化。比如說,fun是乙個解析函式,我們希望後期可以提供豐富的解析函式,而究竟用哪個函式解析,我們希望在配置檔案中配置。這個時候就可以發揮鉤子的力量了。

我們可以在function fun(){}中加入乙個掛鉤點h,然後再執行h這個函式之前,將鉤子函式配置好,我麼就可以根據需要來解析了。

例如:

$h

=config_item

("parser_fun");

//從配置檔案中獲得相應的配置資訊

function

fun(

$data

)

除此意外,php還可以根據字串提供自己的類,然後呼叫類的乙個方法,傳遞某些引數,這些就為php程式的編寫,以及後期的維護擴充套件奠定了,相當堅實的基礎。

$c

=get_class_name

();//獲得類的名字

$m

=get_method_name

();//獲得方法的名字

$k=$c

->

$m();

//執行類的某乙個方法

鉤子的完整實現應該叫事件驅動。事件驅動分為兩個階段,第乙個階段是註冊事件,目的是給未來可能發生的「事件」起乙個名字,簡單的實現方法是用單例模式產生乙個持久的物件或者註冊乙個全域性變數,然後將事件名稱,以及該事件對應的類與方法插入全域性變數即可。也就是掛載乙個鉤子。

第二個階段是觸發事件,本質上就是在事件的全域性變數中查詢要觸發的事件名稱,然後找到註冊好的類與方法,例項化並執行。這樣子就可以擺脫傳統方式中程式必須按順序的規則,進一步實現解除耦合的目的。

鉤子函式可以截獲並處理其他應用程式的訊息。每當特定的訊息發出,在沒有到達目的視窗前,鉤子程式就先捕獲該訊息,亦即鉤子函式先得到控制權。這時鉤子函式即可以加工處理(改變)該訊息,也可以不作處理而繼續傳遞該訊息,還可以強制結束訊息的傳遞。

mounted鉤子函式 對vue中鉤子函式的理解

1 beforecreate 鉤子 該階段元件例項剛建立,元件屬性計算之前 可理解為元件屬性還未初始化,未繫結,未掛載元素el 比如 el,data,methods等,如果你試圖在beforecreated鉤子中獲取這些屬性值,會得到ubdefined 的結果,但是 可以獲取到this物件,因為此時...

Jest 中鉤子函式

首先,我們來寫乙個類,並把它放入乙個檔案 counter.js 中,如下。class counter addone minusone export default counter下面,我們來寫乙個測試檔案,測試這個類。如下。import counter from counter.js const c...

(六)Jest中鉤子函式

在jest中,如果測試用例中需要使用到某個物件 或 在執行測試 的某個時刻需要做一些必要的處理,直接在測試檔案中寫基礎 是不推薦的,可以使用jest的鉤子函式。鉤子函式概念 在 執行的某個時刻,會自動執行的乙個函式。首先我們舉例 新建counter.js檔案,如下 export default cl...