2010-03-08 54 views
3

我在Kohana PHP框架中看到了鉤子,他們是作爲某種事件(Kohana的事件,即某種方法重載)觸發的某種回調函數工作的。鉤子......他們到底在幹什麼

我在Wordpress中看到了鉤子,我不知道它們是什麼或如何使用它們(昨天剛剛看到它們)。

我正在尋找「非框架」的PHP中的事件,我找不到。

鉤子只能在「基於事件」的環境中工作嗎?他們究竟是什麼(一般來說,不只是在PHP中)?如果不是在「基於事件」的環境中,它們有什麼用處?

回答

3

鉤子是,事實上,掛鉤插入各種各樣的事件堆棧;一些控制器迭代的值列表,如果您有任何註冊的事件,控制器可以運行您的自定義代碼。但是PHP本身沒有這樣的東西(有用的),所以你自己做或者使用你在你最喜歡的應用/系統中找到的東西。這是創建插件體系結構的一種相當常見的方式,但也可以用於應用程序控制和其他事情。我之前寫過更多關於my quest的更多universal event and operating set of stack events,其中包括this post here on StackOverflow

正如其他人所說的,PHP是無狀態的,所以在我使用它們的時候,我將它們用作簡單的執行列表,並將我的應用程序的每個部分都嵌入到它中。這種方式我非常可擴展,並且有插件堆棧的基礎。 (當我感到無聊或退休或者我的手上有太多時間時,我會釋放它一個神奇的日子,等等)

你會發現類似的堆棧和鉤子,例如,WordPress,所以一個處理CSS的插件會將自己綁定到CSS_DEFINITION_EVENT(基本上,是將CSS內容寫入HTML部分的WordPress應用程序的那部分)。這東西無處不在。在PHP中,它只適用於(大多數情況下)每個PHP頁面所要求的限制(除非您在web服務器外部執行PHP),但所有主要的操作系統,應用程序,框架和系統都有某種形式的事件堆棧。 PHP只是沒有一個(嚴重)內置。

1

PHP是無狀態的,因此它不能有真正的事件。通過手動添加和存儲事件監聽器(要調用的函數)來仿真它們,然後在代碼中發生某些事情時明確地調用所述監聽器。就像上傳了一張新照片或發生了404錯誤。