欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2014年07月22日 15:51:57   投稿:shichen2014  
這篇文章主要介紹了ThinkPHP行為擴展Behavior應用實例,對于讀者深入了解ThinkPHP框架程序設計大有幫助,需要的朋友可以參考下

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

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', // 讀取靜態(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(),
),

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

// 加載模式行為定義
if(isset($mode['tags'])) {
  Hook::import(is_array($mode['tags'])?$mode['tags']:include $mode['tags']);
}

// 加載應用行為定義
if(is_file(CONF_PATH.'tags.php'))
// 允許應用增加開發(fā)模式配置定義
Hook::import(include CONF_PATH.'tags.php');  

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

ThinkPHP\Library\Think\Think.class.php 初始化完成后會調(diào)用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();
// 應用結(jié)束標簽
Hook::listen('app_end');
return ;
}

 

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

所有鉤子如下:

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

缺點如下:

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

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

優(yōu)點如下:

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

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

總結(jié):

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

相關文章

  • YII2框架中actions的作用與使用方法示例

    YII2框架中actions的作用與使用方法示例

    這篇文章主要介紹了YII2框架中actions的作用與使用方法,結(jié)合實例形式分析了YII2中actions功能、原理、使用方法及操作注意事項,需要的朋友可以參考下
    2020-03-03
  • 微信獲取用戶地理位置信息的原理與步驟

    微信獲取用戶地理位置信息的原理與步驟

    這篇文章主要介紹了微信獲取用戶地理位置信息的原理與步驟的相關資料,需要的朋友可以參考下
    2015-11-11
  • 免費的ip數(shù)據(jù)庫淘寶IP地址庫簡介和PHP調(diào)用實例

    免費的ip數(shù)據(jù)庫淘寶IP地址庫簡介和PHP調(diào)用實例

    淘寶ip地址庫提供免費的ip信息查詢,可查詢ip所在國家、區(qū)域、省份、城市及運營商等信息。不需要認證不需要注冊,唯一的小缺陷就是限制美妙查詢頻率不能高于10次。
    2014-04-04
  • Yii使用ajax驗證顯示錯誤messagebox的解決方法

    Yii使用ajax驗證顯示錯誤messagebox的解決方法

    這篇文章主要介紹了Yii使用ajax驗證顯示錯誤messagebox的解決方法,可以自行設置Ajax提示信息的方式,是非常實用的技巧,需要的朋友可以參考下
    2014-12-12
  • php導入導出excel實例

    php導入導出excel實例

    使用PHPExcelphp導入excel、導出excel,支持office2007格式,同時兼容2003,具體看例子學習吧!
    2013-10-10
  • Yii框架響應組件用法實例分析

    Yii框架響應組件用法實例分析

    這篇文章主要介紹了Yii框架響應組件用法,結(jié)合實例形式分析了Yii響應組件的原理及常見使用技巧,需要的朋友可以參考下
    2019-09-09
  • PHP模板引擎Smarty中變量的使用方法示例

    PHP模板引擎Smarty中變量的使用方法示例

    這篇文章主要介紹了PHP模板引擎Smarty中變量的使用方法,詳細講述了Smarty模板的原理,下載,配置方法與變量的使用技巧,需要的朋友可以參考下
    2016-04-04
  • windows7下安裝php的php-ssh2擴展教程

    windows7下安裝php的php-ssh2擴展教程

    這篇文章主要介紹了windows7下安裝php的php-ssh2擴展教程,本文同時適用XP系統(tǒng),但Win8沒有測試過,需要的朋友可以參考下
    2014-07-07
  • PHP Yii框架之表單驗證規(guī)則大全

    PHP Yii框架之表單驗證規(guī)則大全

    Yii是一個基于組件的高性能PHP框架,用于開發(fā)大型Web應用。Yii采用嚴格的OOP編寫,并有著完善的庫引用以及全面的教程,本文給大家介紹php yii框架之表單驗證規(guī)則大全,感興趣的朋友一起學習吧
    2015-11-11
  • Laravel實現(xiàn)數(shù)據(jù)庫遷移與支持中文的填充

    Laravel實現(xiàn)數(shù)據(jù)庫遷移與支持中文的填充

    最近在學習Laravel數(shù)據(jù)庫方面的內(nèi)容,發(fā)現(xiàn)了一些資料不錯整理出來分享給大家,下面這篇文章主要給大家介紹了關于Laravel實現(xiàn)數(shù)據(jù)庫遷移與支持中文填充的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下。
    2017-11-11

最新評論