天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

ThinkPHP行為擴(kuò)展Behavior應(yīng)用實(shí)例詳解

本文以實(shí)例的形式詳細(xì)介紹了Thinkphp的行為擴(kuò)展Behavior的實(shí)現(xiàn)方法,有助于讀者更靈活的掌握Thinkphp的開發(fā),具體步驟如下:

Thinkphp 行為擴(kuò)展 (Behavior) 流程:

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

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

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

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

默認(rèn)調(diào)用了系統(tǒng)行為擴(kuò)展:靜態(tài)緩存讀取 、頁面Trace顯示輸出、模板解析、模板內(nèi)容輸出替換、靜態(tài)緩存寫入

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

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

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

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

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

 

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

所有鉤子如下:

'url_dispatch'     // URL調(diào)度結(jié)束標(biāo)簽'app_init'     // 應(yīng)用初始化標(biāo)簽'app_begin'     // 應(yīng)用開始標(biāo)簽'app_end'     // 應(yīng)用結(jié)束標(biāo)簽'action_begin'     // 動(dòng)作執(zhí)行前操作'action_end'     // 動(dòng)作執(zhí)行后操作   'ajax_return'     // 用于擴(kuò)展其他返回格式數(shù)據(jù)'path_info'       // 檢測(cè)路由規(guī)則 如果沒有則按默認(rèn)規(guī)則調(diào)度URL'template_filter'    // 模版編譯過濾標(biāo)簽'view_begin'      // 視圖開始標(biāo)簽'view_end'       // 視圖結(jié)束標(biāo)簽'view_parse'      // 視圖解析標(biāo)簽'view_filter'      // 內(nèi)容過濾標(biāo)簽

缺點(diǎn)如下:

1.順序不可控(配置文件沒有專門的參數(shù)去控制順序)如app_init同時(shí)有2個(gè)監(jiān)控時(shí)先調(diào)用哪個(gè)方法。

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

優(yōu)點(diǎn)如下:

1.可以實(shí)現(xiàn)了好多行為擴(kuò)展

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

總結(jié):

行為擴(kuò)展就是在 程序某個(gè)操作時(shí)去額外的去執(zhí)行某一特定功能。如程序在操作數(shù)據(jù)庫 讀的時(shí)候 通過explian獲取性能信息并監(jiān)測(cè)性能瓶頸 如出現(xiàn)獲取數(shù)據(jù)時(shí)超過特定秒數(shù) 就把相關(guān)信息email給項(xiàng)目經(jīng)理等。

php技術(shù)ThinkPHP行為擴(kuò)展Behavior應(yīng)用實(shí)例詳解,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 奇虎成人网 | 伊在香蕉国产在线视频 | 亚洲精品无码成人AAA片 | 观赏女性排尿 | 领导边摸边吃奶边做爽在线观看 | 沦为公交两奶头春药高潮迭起 | 亚洲在线国产日韩欧美 | 亚洲va久久久久 | 国产又黄又粗又爽又色的视频软件 | 国产精品嫩草影视在线观看 | 亚洲涩福利高清在线 | 爱爱好爽好大好紧视频 | 日本夜爽爽一区二区三区 | 大乳牛奶女在线观看 | 99热在线精品视频 | 大伊人青草狠狠久久 | TUBE69CHINESE学生| 好妞操 | 欧美国产精品久久久乱码 | 国产精品青青在线麻豆 | 国产在线播放91 | 国产精品亚洲精品久久国语 | 午夜在线视频国产极品片 | 九九热国产视频 | 无限资源在线看影院免费观看 | qvod伦理片 | 精品国产麻豆免费人成网站 | 三级网站视频在线观看 | 色橹橹欧美在线观看视频高清 | 亚洲三级黄色片 | 一道精品视频一区二区三区 | 亚洲AV无码乱码A片无码蜜桃 | 亚洲欧美人成视频在线 | YY600800新视觉理论私人 | 国产午夜三级一区二区三 | 日本 稀土矿 | 18美女腿打开无遮软件 | 97精品一区二区视频在线观看 | 37pao成人国产永久免费视频 | 中文字幕在线观看国产 | 天天看片视频免费观看 |