亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

關于thinkPHP3.2.2框架行為擴展及demo的解析

2020-03-22 19:45:51
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了thinkPHP3.2.2框架行為擴展,結合實例形式分析了thinkPHP3.2.2框架行為擴展原理、實現方法及相關操作注意事項,需要的朋友可以參考下

本文實例講述了thinkPHP3.2.2框架行為擴展。分享給大家供大家參考,具體如下:

首先介紹一下行為擴展類,本人愚鈍,還是借用tp手冊上的來說:

行為(Behavior)是一個比較抽象的概念,你可以想象成在應用執行過程中的一個動作或者處理,在框架的執行流程中,各個位置都可以有行為產生,例如路由檢測是一個行為,靜態緩存是一個行為,用戶權限檢測也是行為,大到業務邏輯,小到瀏覽器檢測、多語言檢測等等都可以當做是一個行為,甚至說你希望給你的網站用戶的第一次訪問彈出Hello,world!這些都可以看成是一種行為,行為的存在讓你無需改動框架和應用,而在外圍通過擴展或者配置來改變或者增加一些功能。

而不同的行為之間也具有位置共同性,比如,有些行為的作用位置都是在應用執行前,有些行為都是在模板輸出之后,我們把這些行為發生作用的位置稱之為標簽(位),當html' target='_blank'>應用程序運行到這個標簽的時候,就會被攔截下來,統一執行相關的行為,類似于AOP編程中的“切面”的概念,給某一個切面綁定相關行為就成了一種類AOP編程的思想。

那下面就入正題,講解一下行為(Behavior)的實例

讓行為工作有兩種方式:

1.通過在conf目錄下的tags.php文件 配置行為 通過/Think/Hook::listen(name);觸發行為

2.通過/Think/Hook::add(name,class_namespace) 注冊一個行為,然后觸發(注冊函數必須在觸發函數之前)

在我們講解實例之前,很有必要先講講行為是怎么觸發的。

行為觸發靠的是/Think/Hook::listen(name)方法,那方法里面到底做了什么,我們先看看源碼:

/** * 監聽標簽的插件 * @param string $tag 標簽名稱 * @param mixed $params 傳入參數 * @return void * add by yangligao 2014/8/25 * listen 個人覺得方法名稱取得不怎么好理解,看程序中就知道這個方法實際上就是看$tags中有沒有參數中的tag * 如果有,就觸發之; * 如果沒有,你懂的,過之(至少程序中是沒有做操作)。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; //thinkphp原始的樣式 return $result;//筆者^_^自己添加的}

這個方法里面記錄行為的一些運行狀態的值,函數最后一點筆者做了一點修改,只是讓這個方法有了一份返回值(而非返回空)

最重要的地方就是

$result = self::exec($name, $tag,$params);

這個地方就開始執行所謂的行為了,先看看exec方法的源碼

 * 執行某個插件 * @param string $name 插件名稱 * @param string $tag 方法名(標簽名) * @param Mixed $params 傳入的參數 * @return void * add by yangligao 2014/8/25 * exec 執行文件 static public function exec($name, $tag, $params=NULL) { if( Behavior == substr($name,-8) ){ // 行為擴展必須用run入口方法 $tag = run // file_put_contents( D:/1.txt ,$name,FILE_APPEND ); $addon = new $name(); return $addon- $tag($params); }

這個方法所做的就是先判斷行為配置中的設定的類名中是否有Behavior這個字符串,如果有就執行一個叫run的方法

準備工作差不多了。下面動手試試實例

方法一:通過在conf目錄下的tags.php文件 配置行為 通過/Think/Hook::listen(name);觸發行為

我們先在Home/Conf下面準備tags.php配置文件

 ?phpreturn array( app_app = array( Home/Behavior/DemoShowHelloWorldBehavior ),);

根據這個配置文件,我們還得在Home/Behavior下面準備DemoShowHelloWorldBehavior的類文件

 ?phpnamespace Home/Behavior;use Think/Controller; * 這個文件的類可以繼承Controller類 這樣就可以使用assign方法 * 這個方法框架里面:對你的返回值不理睬,只是用作判斷插件有沒有出錯 * 出于某個目的,筆者對Hook::listen方法作了小修改 讓他可以返回值,或許會有點用class DemoShowHelloWorldBehavior extends Controller{ public function run(){ $return_string = (Home/Behavior) font DemoShowHelloWoldBehavior /font is Running....^_^! hr  $this- assign( behavior_assign , This is assigned by font DemoShowHelloWoldBehavior /font  return $return_string;}

這個類文件,我們是繼承的控制器,里面做了兩件事:

1.返回一個字符串

2.使用Controller方法的assign方法給模板賦值

然后我們來觸發這個行為,你只需要在控制器總寫上一下代碼以及在對應模板中輸出對應變量

$behaviorReturn = /Think/Hook::listen( app_app 

 p {$behavior_assign} /p 

這樣頁面就會輸出行為類中assign的變量值了,行為類的返回值這里沒有打印,你有興趣可以打印看看哦

方法二:.通過/Think/Hook::add(name,class_namespace) 注冊一個行為,然后觸發(注冊函數必須在觸發函數之前)

這個與方法一唯一的區別就是他不用定義tags.php文件,取而代之的是一個php語句(如下):

/Think/Hook::add( app_app , Home//Behavior//DemoShowHelloWorldBehavior 

其他的操作都相同。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !

相關推薦:

分享ThinkPHP模板引擎導入資源文件的方案

關于thinkPHP5框架自定義驗證器的實現方法

以上就是關于thinkPHP3.2.2框架行為擴展及demo的解析的詳細內容,PHP教程

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品第2页| 岛国精品视频在线播放| 亚洲性日韩精品一区二区| 日韩欧美国产视频| 久久久亚洲网站| 亚洲白虎美女被爆操| 亚洲国产精品久久| 国产国语videosex另类| 91香蕉嫩草影院入口| 亚洲精品动漫100p| 国产亚洲精品高潮| 色婷婷综合久久久久中文字幕1| 日韩在线免费观看视频| 久久亚洲一区二区三区四区五区高| 亚洲视频专区在线| 欧美日韩一区二区免费视频| 麻豆精品精华液| 亚洲最大成人免费视频| 欧美成人免费一级人片100| 日韩av男人的天堂| 国产精品久久精品| 亚洲精品一二区| 亚洲人成电影在线| 久久久久久久电影一区| …久久精品99久久香蕉国产| 欧美另类第一页| 亚洲国产精品字幕| 亚洲图片欧美日产| 国产精品国产亚洲伊人久久| 九九热这里只有精品6| 亚洲成人亚洲激情| www亚洲精品| 亚洲字幕在线观看| 欧美日韩午夜视频在线观看| 国产精品扒开腿做爽爽爽的视频| 中文字幕亚洲欧美| 97精品久久久中文字幕免费| 国产精品高潮呻吟视频| 国产美女直播视频一区| 波霸ol色综合久久| 91沈先生在线观看| 久久97精品久久久久久久不卡| 亚洲天堂av在线免费观看| 亚洲iv一区二区三区| 国产精品无av码在线观看| 精品国产一区av| 亚洲性视频网址| 98视频在线噜噜噜国产| 不卡在线观看电视剧完整版| 久久69精品久久久久久久电影好| 国产精品91久久久久久| 欧美日韩国产色视频| 国产一区二区三区视频免费| 亚洲国产欧美一区二区三区同亚洲| 亚洲一区制服诱惑| 国产精品久久久久久久9999| 高清一区二区三区四区五区| 亚洲网站在线观看| 2023亚洲男人天堂| 国产999精品| 琪琪第一精品导航| 久久亚洲影音av资源网| 国产美女久久久| 欧美日韩国产精品专区| 欧美激情欧美激情| 久久免费视频观看| 在线电影中文日韩| 91精品中国老女人| 91精品国产综合久久久久久久久| 中文字幕欧美日韩在线| 美女撒尿一区二区三区| 国产精品高潮呻吟久久av无限| 成人综合国产精品| 国产精品久久久久影院日本| 在线精品91av| 欧美日韩国产综合视频在线观看中文| 久久人91精品久久久久久不卡| 日韩精品视频在线观看网址| 国产亚洲欧洲高清一区| 欧美一级高清免费| 亚洲伊人久久综合| 欧美黑人极品猛少妇色xxxxx| 欧美成人激情视频免费观看| 国产香蕉一区二区三区在线视频| 在线观看国产欧美| 亚洲欧美中文字幕| 欧美丰满少妇xxxx| 色综合男人天堂| 精品亚洲一区二区三区四区五区| 亚洲欧美国产日韩中文字幕| 国产成人精品日本亚洲| 成人国内精品久久久久一区| 欧美视频在线观看 亚洲欧| 国产精品久久久久久久电影| 久久久爽爽爽美女图片| 中文字幕亚洲情99在线| 一本色道久久88综合亚洲精品ⅰ| 国产精品久久久久999| 亚洲а∨天堂久久精品喷水| 久久99热精品这里久久精品| 日本久久久久久| 日韩成人黄色av| 欧美电影免费播放| 日韩免费av片在线观看| 992tv成人免费影院| 91av视频在线播放| 国产欧美一区二区白浆黑人| 美日韩精品视频免费看| 中文字幕亚洲在线| 色中色综合影院手机版在线观看| 久久久黄色av| 国产91久久婷婷一区二区| 国产精品久久久久久久电影| 亚洲福利在线视频| 欧美日韩福利视频| 国产深夜精品福利| 精品一区电影国产| 麻豆乱码国产一区二区三区| 亚洲精品电影在线观看| 国产视频自拍一区| 91精品国产亚洲| 亚洲视频在线观看免费| 国产成人精品999| 国产精品免费一区二区三区都可以| 国产精品久久久91| 社区色欧美激情 | 亚洲电影第1页| 日韩极品精品视频免费观看| 青青久久av北条麻妃海外网| 久久久成人的性感天堂| 国产精品久久久久久搜索| 欧美精品18videos性欧| 欧美日韩视频免费播放| 亚洲精品国产精品久久清纯直播| 久久久久久网站| 亚洲欧美日韩图片| 中文国产亚洲喷潮| 欧美三级欧美成人高清www| 色琪琪综合男人的天堂aⅴ视频| 国产精品色视频| 日韩亚洲精品视频| 最近2019免费中文字幕视频三| 欧美成人午夜影院| 久久伊人精品天天| 成人免费在线网址| 欧美精品少妇videofree| 亚洲精品国产欧美| 欧美一区视频在线| 欧美在线视频导航| 亚洲在线观看视频网站| 欧美成人合集magnet| 欧美激情图片区| 在线精品视频视频中文字幕| 欧美乱大交做爰xxxⅹ性3| 成人黄色中文字幕| 亚洲精品成人久久| 亚洲精品国产精品久久清纯直播| 97精品一区二区三区| 日韩av影视综合网| 韩国三级电影久久久久久| 精品福利樱桃av导航| 国产精品国内视频| 国产免费一区视频观看免费| 色妞欧美日韩在线|