Yaf學習筆記之鉤子與外掛程式

2021-07-30 14:32:34 字數 1833 閱讀 5478

yaf中定義了6個鉤子(hook),相當於事件,在外掛程式(plugin)類中定義與鉤子相同名稱的方法,註冊之後,這些方法便會被框架自動呼叫。

觸發順序

名稱觸發時機說明1

routerstartup

路由之前

觸發最早的乙個事件

2routershutdown

路由結束之後

3dispatchloopstartup

分發迴圈開始前

4predispatch

分發之前

如果勤求處理過程中傳送了forward,則該事件可能觸發多次

5postdispatch

分發之後

動作執行結束,檢視渲染完成,也可能觸發多次

6dispatchloopshutdown

分發迴圈結束

所有業務邏輯已經完成,響應還未傳送

寫個例子來加深理解:

1. 定義外掛程式

定義乙個traceplugin外掛程式,其中定義yaf框架中的6個hook同名方法。

<?php 

class

traceplugin

extends

yaf_plugin_abstract

public

function

routershutdown

(yaf_request_abstract $request, yaf_response_abstract $response)

public

function

dispatchloopstartup

(yaf_request_abstract $request, yaf_response_abstract $response)

public

function

predispatch

(yaf_request_abstract $request, yaf_response_abstract $response)

public

function

postdispatch

(yaf_request_abstract $request, yaf_response_abstract $response)

public

function

dispatchloopshutdown

(yaf_request_abstract $request, yaf_response_abstract $response)

}

2. 註冊外掛程式

3.測試外掛程式

indexcontroller內容如下:

<?php 

class

indexcontroller

extends

yaf_controller_abstract

public

function

useraction

()

}

為了測試多次觸發predispatchpostdispatchindexactionforward到了useraction

瀏覽器中訪問yaf.cc/index/index:

由上圖可見,predispatchpostdispatch確實被觸發了兩次,同時兩個action中的檢視都渲染出來了。

鉤子學習筆記

rel file list href file e temp msohtml1 01 clip filelist.xml 一 鉤子過程就像是乙個監聽 偵查者,os先把訊息發給鉤子過程,鉤子捕獲訊息後再決定對訊息的處理 二 安裝鉤子過程的原型說明 hhook setwindowshookex inti...

c 鉤子學習筆記

包括系統鉤子和執行緒鉤子,或者叫全域性鉤子和私有鉤子。系統鉤子需要乙個單獨的dll,這個地方耽誤了不少時間,網上有說可以不用單獨dll的。現在開始貼 參照了紅黑聯盟中的一篇文章。複製 如下 public class sethook public abstract class hooks hookty...

Yaf學習之控制器

yaf中的控制器 序號方法名稱作用1 getmodulename 獲取當前所在模組的名稱 2getviewpath 獲取檢視路徑 3render string tpl,array params 渲染乙個檢視,返回乙個yaf response abstract例項 4display string tp...