php中鉤子hook的實現原理

2022-09-14 16:54:24 字數 982 閱讀 3604

鉤子定義
鉤子是程式設計裡乙個常見概念,非常的重要。它使得系統變得非常容易拓展,(而不用理解其內部的實現機理,這樣可以減少很多任務作量)。

鉤子作用

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

鉤子實現

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

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

<?php

/** * 定義鉤子

* date: 2021/8/25 9:50

*/class hook

//觸發事件

public function exec()

}}/** 鉤子實現

* date: 2021/8/25 9:55

*/class man

}class women

}class child

}/**註冊事件

* date: 2021/8/25 9:56

*/class ball

public function down()

public function dothing()

}$ball = new ball();

$ball->down();

$ball->dothing();

用過php的鉤子(hook ?

鉤子定義 鉤子是程式設計裡乙個常見概念,非常的重要。它使得系統變得非常容易拓展,而不用理解其內部的實現機理,這樣可以減少很多任務作量 鉤子作用 鉤子函式可以截獲並處理其他應用程式的訊息。每當特定的訊息發出,在沒有到達目的視窗前,鉤子程式就先捕獲該訊息,亦即鉤子函式先得到控制權。這時鉤子函式即可以加工...

php中鉤子 hook 的應用示例demo

php問題解決 我們先來回顧下原本的開發流程 產品汪搞出了一堆需求 當使用者註冊成功後需要傳送簡訊 傳送郵件等等 然後聰明機智勇敢的程式猿們就一撲而上 把這些需求轉換成 扔在 使用者註冊成功 和 跳轉到首頁 之間 沒有什麼能夠阻擋 充滿創造力的猿們 class test test new test ...

php中的鉤子 hook外掛程式機制

對 鉤子 這個概念其實不熟悉,最近看到乙個php框架中用到這種機制來擴充套件專案,所以大概來了解下。hook外掛程式機制的基本思想 在專案 中,你認為要擴充套件 暫時不擴充套件 的地方放置乙個鉤子函式,等需要擴充套件的時候,把需要實現的類和函式掛載到這個鉤子上,就可以實現擴充套件了。思想就是這樣聽起...