久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網
      最全最豐富的資訊網站

      介紹tp5框架中的hook機制

      下面由thinkphp教程欄目給大家介紹tp5框架中的hook機制,希望對需要的朋友有所幫助!

      1. 官方解釋

      行為(Behavior)是ThinkPHP擴展機制中比較關鍵的一項擴展,行為既可以獨立調用,也可以綁定到某個標簽中進行偵聽,在官方提出的CBD模式中行為也占了主要的地位,可見行為在ThinkPHP框架中意義非凡。

      2. TP5自帶鉤子(TP框架中已經埋好標簽,我們只要配置實現相應的函數就可以用了)

      1. app_init 應用初始化標簽位,在thinkApp.php的initCommon函數中Hook::listen(‘app_init’);沒有接收參數。
      2. app_begin應用開始標簽位,在thinkApp.php的run函數中,在加載路由和請求信息后執(zhí)行。會接收一個參數,存儲的是本次請求的調度信息。
      3. module_init 模塊初始化標簽位,在thinkApp.php的module函數中,在加載請求控制器之前執(zhí)行,接收一個參數,存儲請求信息。
      4. action_init 控制器開始標簽位,在thinkApp.php的module函數中,在加載完控制器后,使用反射請求控制器之前執(zhí)行。接收一個參數,是一個數組,第一個元素是請求控制器實例對象,第二個函數時要執(zhí)行的控制器函數名。
      5. view_fileter 視圖輸出過濾標簽位,在thinkView.php的fetch函數中,接收一個參數,視圖字符串。
      6. app_end 應用結束標簽為,在thinkApp.php中run函數中,Hook::listen(‘app_end’);
      7. log_write 日志write方法標簽位,在調用Log::wirte記錄日志之前執(zhí)行。接收一個參數,要寫入的日志信息。
      8. response_end 響應結束標簽為。在thinkResponse.php的send函數中,在響應客戶端請求之后執(zhí)行。

      3. 鉤子函數的注冊和監(jiān)聽都依賴于thinkHook.php

      4. 系統(tǒng)只帶的鉤子函數,我們可以在applicationtags.php中注冊,也可以使用Hook::add()來添加。

      > 1. 官方文檔數tags.php會自動加載,但是經測試我下載的tp5不會自動加載tags.php文件,所以就手動在thinkstart.php文件的App::run()->send();函數之前寫了一行代碼用于,注冊tags文件中的鉤子實現。代碼為 "php     // 加載Hook     Hook::import(require APP_PATH . '/tags.php'); " > 2. 也可以使用Hook::add和Hook::listen來添加自己的鉤子函數。Hook::listen()相當于是標簽位,Hook::add()則相當于是對標簽位相應的實現。所以要確保Hook::add()在Hoo::listen之前執(zhí)行,不然就沒什么用處了。

      5. 鉤子函數的綁定。

      鉤子函數既可以單獨綁定一個類,也可以綁定類中的一個方法,或者直接綁定一個匿名函數。當綁定到一個類時,如果類中有run函數,那就直接執(zhí)行run函數,如果沒有run函數,而有一個與鉤子名一樣的函數則會執(zhí)行該函數。(注意:鉤子函數是駝峰式命名,并且鉤子函數名的優(yōu)先級大于run函數的優(yōu)先級)

      贊(0)
      分享到: 更多 (0)
      網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號