了解thinkphp鉤子指的是什么意思?這個問題可能是我們日常學習或工作經常見到的,希望通過這個文章能讓大家收獲頗深,下面是小編給大家帶來的參考內容,讓我們一起來看看吧!
首先,鉤子是一種觸發機制,如同一個陷阱,當程序運行到某個地方時就會觸發這個陷阱,然后執行這個Hook,執行完成后,系統根據執行的不同結果繼續進行。
那么,thinkphp鉤子(Hook)機制的原理是什么呢?
1、框架在\Think\Think->start()
方法中調用Hook類中的import方法批量加載模式行為:默認為\Model\common.php
中的配置文件,該文件定義行為擴展
2、通過Hook:listen()方法監聽tag標記的行為.Hook類中定義一個數組tags:tag為key;Behavior行為是value.通過Hook:exec()執行該標記的行為插件
/** * 監聽標簽的插件 * @param string $tag 標簽名稱 * @param mixed $params 傳入參數 * @return void */ static public function listen($tag, &$params=NULL) { if(isset(self::$tags[$tag])) { if(APP_DEBUG) { G($tag.'Start'); trace('[ '.$tag.' ] --START--','','INFO'); } foreach (self::$tags[$tag] as $name) { APP_DEBUG && G($name.'_start'); $result = self::exec($name, $tag,$params); if(APP_DEBUG){ G($name.'_end'); trace('Run '.$name.' [ RunTime:'.G($name.'_start',$name.'_end',6).'s ]','','INFO'); } if(false === $result) { // 如果返回false 則中斷插件執行 return ; } } if(APP_DEBUG) { // 記錄行為的執行日志 trace('[ '.$tag.' ] --END-- [ RunTime:'.G($tag.'Start',$tag.'End',6).'s ]','','INFO'); } } return; } /** * 執行某個插件 * @param string $name 插件名稱 * @param string $tag 方法名(標簽名) * @param Mixed $params 傳入的參數 * @return void */ static public function exec($name, $tag,&$params=NULL) { if('Behavior' == substr($name,-8) ){ // 行為擴展必須用run入口方法 $tag = 'run'; } $addon = new $name(); return $addon->$tag($params); }
感謝各位看完上述內容,你們對“thinkphp鉤子指的是什么意思”這篇文章大概了解了嗎?希望文章的內容對大家有所幫助,如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。