一区二区久久-一区二区三区www-一区二区三区久久-一区二区三区久久精品-麻豆国产一区二区在线观看-麻豆国产视频

ThinkPHP行為擴展Behavior應用實例詳解

本文以實例的形式詳細介紹了Thinkphp的行為擴展Behavior的實現方法,有助于讀者更靈活的掌握Thinkphp的開發,具體步驟如下:

Thinkphp 行為擴展 (Behavior) 流程:

最先是讀取配置文件信息:

$mode = include is_file(CONF_PATH.'core.php')?CONF_PATH.'core.php':MODE_PATH.APP_MODE.'.php';

讀取配置文件信息 Thinkphp/Mode/common.php

// 行為擴展定義'tags' => array('app_init'   => array(),'app_begin'   => array(  'Behavior/ReadHtmlCache', // 讀取靜態緩存),'app_end'    => array(  'Behavior/ShowPageTrace', // 頁面Trace顯示),'path_info'   => array(),'action_begin' => array(),'action_end'  => array(),'view_begin'  => array(),'view_parse'  => array(  'Behavior/ParseTemplate', // 模板解析 支持php、內置模板引擎和第三方模板引擎),'template_filter'=> array(  'Behavior/ContentReplace', // 模板輸出替換),'view_filter'  => array(  'Behavior/WriteHtmlCache', // 寫入靜態緩存),'view_end'   => array(),),

默認調用了系統行為擴展:靜態緩存讀取 、頁面Trace顯示輸出、模板解析、模板內容輸出替換、靜態緩存寫入

// 加載模式行為定義if(isset($mode['tags'])) {  Hook::import(is_array($mode['tags'])?$mode['tags']:include $mode['tags']);}// 加載應用行為定義if(is_file(CONF_PATH.'tags.php'))// 允許應用增加開發模式配置定義Hook::import(include CONF_PATH.'tags.php');  

分別用Hook去加載 系統行為和自定義行為,并把配置信息保存到 Hook 私有屬性$tags中

Thinkphp/Library/Think/Think.class.php 初始化完成后會調用App::run();

Thinkphp/Library/Think/App.class.php文件如下:

/*** 運行應用實例 入口文件使用的快捷方法* @access public* @return void*/static public function run() {// 應用初始化標簽Hook::listen('app_init');App::init();// 應用開始標簽Hook::listen('app_begin');// Session初始化if(!IS_CLI){  session(C('SESSION_OPTIONS'));}// 記錄應用初始化時間G('initTime');App::exec();// 應用結束標簽Hook::listen('app_end');return ;}

 

可以看出程序在App init之前 通過鉤子去監聽(查看)此動作時是否有需要處理的。循環$tags['app_init']獲取類名并通過類名自動執行行為擴展類run方法

所有鉤子如下:

'url_dispatch'     // URL調度結束標簽'app_init'     // 應用初始化標簽'app_begin'     // 應用開始標簽'app_end'     // 應用結束標簽'action_begin'     // 動作執行前操作'action_end'     // 動作執行后操作   'ajax_return'     // 用于擴展其他返回格式數據'path_info'       // 檢測路由規則 如果沒有則按默認規則調度URL'template_filter'    // 模版編譯過濾標簽'view_begin'      // 視圖開始標簽'view_end'       // 視圖結束標簽'view_parse'      // 視圖解析標簽'view_filter'      // 內容過濾標簽

缺點如下:

1.順序不可控(配置文件沒有專門的參數去控制順序)如app_init同時有2個監控時先調用哪個方法。

2.監控不是全局監控內部寫的太死只有一些定義好的不能通過配置文件去自動控制每一個操作的鉤子(可能是考慮到性能才沒有加)

優點如下:

1.可以實現了好多行為擴展

2.可以代理檢測、瀏覽器防刷新檢測、操作路由檢測等

總結:

行為擴展就是在 程序某個操作時去額外的去執行某一特定功能。如程序在操作數據庫 讀的時候 通過explian獲取性能信息并監測性能瓶頸 如出現獲取數據時超過特定秒數 就把相關信息email給項目經理等。

php技術ThinkPHP行為擴展Behavior應用實例詳解,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 精品日韩一区二区三区 | 开心综合网 | 国产精品系列在线 | 亚洲情综合五月天 | 中文字幕精品一区影音先锋 | 欧美日韩一区二区在线观看视频 | 在线小视频国产 | 中文字幕在线视频网 | 免费国产高清视频 | 另类亚洲图片 | 色婷婷激婷婷深爱五月小说 | 中文字幕色站 | 色婷婷久久| 韩国免费毛片在线看 | 久久新视频 | 在线激情小视频 | 激情视频网址 | 日产欧产va高清 | 好吊色在线 | 亚洲第一页中文字幕 | 色哟哟哟 | 色综合天天综合网国产成人网 | 视频免费1区二区三区 | 加勒比视频网站 | 国产成人在线视频免费观看 | 级毛片久久久毛片精品毛片 | 国产中文字幕乱人伦在线观看 | 国产在亚洲线视频观看 | 国产日韩欧美一区二区三区综合 | 4hu四虎永久免在线视 | 日韩精品一级毛片 | 91精品国产自产在线观看高清 | 77se77亚洲欧美在线大屁股 | 9l国产精品久久久久麻豆 | 亚洲综合色视频在线观看 | 国产精品日韩欧美在线第3页 | 久99久女女精品免费观看69堂 | 91大西瓜国产线观看免费 | 尤物yw午夜国产精品视频 | 国产大片视频免费观看 | 国产无遮挡床戏视频免费 |