婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > thinkPHP3.2.2框架行為擴展及demo示例

thinkPHP3.2.2框架行為擴展及demo示例

熱門標簽:h5 地圖標注 高識別電銷機器人 寶安400電話辦理 拉薩打電話機器人 沈陽人工智能電銷機器人公司 合肥外呼系統(tǒng)app 智能外呼電銷系統(tǒng) 電銷機器人-快迭智能 哈爾濱400電話辦理到易號網

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

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

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

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

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

讓行為工作有兩種方式:

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

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

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

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

/**
 * 監(jiān)聽標簽的插件
 * @param string $tag 標簽名稱
 * @param mixed $params 傳入參數
 * @return void
 */
/**
 * add by yangligao 2014/8/25
 * listen 個人覺得方法名稱取得不怎么好理解,看程序中就知道這個方法實際上就是看$tags中有沒有參數中的tag
 *   如果有,就觸發(fā)之;
 *   如果沒有,你懂的,過之(至少程序中是沒有做操作)。
 */
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 則中斷插件執(zhí)行
    return ;
   }
  }
  if(APP_DEBUG) { // 記錄行為的執(zhí)行日志
   trace('[ '.$tag.' ] --END-- [ RunTime:'.G($tag.'Start',$tag.'End',6).'s ]','','INFO');
  }
 }
 // return; //thinkphp原始的樣式
 return $result;//筆者^_^自己添加的
}

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

最重要的地方就是

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

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

 /**
  * 執(zhí)行某個插件
  * @param string $name 插件名稱
  * @param string $tag 方法名(標簽名)
  * @param Mixed $params 傳入的參數
  * @return void
  */
 /**
  * add by yangligao 2014/8/25
  * exec 執(zhí)行文件
  */
 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這個字符串,如果有就執(zhí)行一個叫run的方法

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

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

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

?php
return array(
  'app_app' => array('Home\Behavior\DemoShowHelloWorldBehavior'),
);

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

?php
namespace 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方法給模板賦值

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

$behaviorReturn = \Think\Hook::listen('app_app');

div>{$behavior_assign}/div>

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

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

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

\Think\Hook::add('app_app', 'Home\\Behavior\\DemoShowHelloWorldBehavior');

其他的操作都相同。

更多關于thinkPHP相關內容感興趣的讀者可查看本站專題:《ThinkPHP入門教程》、《thinkPHP模板操作技巧總結》、《ThinkPHP常用方法總結》、《codeigniter入門教程》、《CI(CodeIgniter)框架進階教程》、《Zend FrameWork框架入門教程》及《PHP模板技術總結》。

希望本文所述對大家基于ThinkPHP框架的PHP程序設計有所幫助。

您可能感興趣的文章:
  • Thinkphp5框架簡單實現鉤子(Hook)行為的方法示例
  • thinkPHP基于反射實現鉤子的方法分析
  • thinkPHP中鉤子的使用方法實例分析
  • thinkPHP中鉤子的兩種配置調用方法詳解
  • ThinkPHP行為擴展Behavior應用實例詳解
  • Thinkphp5行為使用方法匯總
  • 老生常談ThinkPHP中的行為擴展和插件(推薦)
  • thinkPHP5.0框架整體架構總覽【應用,模塊,MVC,驅動,行為,命名空間等】
  • Thinkphp 框架擴展之行為擴展原理與實現方法分析
  • thinkphp5.1 框架鉤子和行為用法實例分析

標簽:山東 林芝 成都 威海 梅州 巴中 張家口 泰州

巨人網絡通訊聲明:本文標題《thinkPHP3.2.2框架行為擴展及demo示例》,本文關鍵詞  thinkPHP3.2.2,框架,行為,擴展,;如發(fā)現本文內容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內容系統(tǒng)采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《thinkPHP3.2.2框架行為擴展及demo示例》相關的同類信息!
  • 本頁收集關于thinkPHP3.2.2框架行為擴展及demo示例的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    2020日本不卡一区二区视频| 日本欧美大码aⅴ在线播放| 欧美日韩国产一区| 欧美xxxx在线观看| 国产精品入口麻豆九色| 日韩经典中文字幕一区| 欧美性受极品xxxx喷水| 欧美日韩免费观看一区二区三区| 欧美一区二区三区成人| 亚洲激情自拍偷拍| 久久国产三级精品| 欧美日韩在线精品一区二区三区激情| 日韩一级视频免费观看在线| 中文字幕不卡在线观看| 麻豆成人在线观看| 91精品国产综合久久久久久久久久| 国产精品久久久久久久久搜平片| 久久精品国产一区二区| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲夂夂婷婷色拍ww47| 久久久久久久久一| 日韩电影一区二区三区四区| 欧美亚洲一区三区| 亚洲激情第一区| 亚洲国产综合91精品麻豆| 国产成人免费视| 中文字幕一区在线观看视频| 国产一区不卡视频| 久久久久久电影| 99国产精品一区| 67194成人在线观看| 日本不卡中文字幕| 日韩片之四级片| www.av亚洲| 日本亚洲最大的色成网站www| 欧美一区二区人人喊爽| 国产麻豆精品视频| 亚洲人精品一区| 精品精品欲导航| 丝袜美腿亚洲一区| 欧美日本不卡视频| 日本午夜精品视频在线观看| 91麻豆精品国产综合久久久久久| 亚洲午夜国产一区99re久久| 久久久另类综合| 欧美性受xxxx黑人xyx| 国产99一区视频免费| 视频一区二区三区中文字幕| 日本一区二区电影| 国产精品久久久久影院老司| 欧美成人精品1314www| av在线播放成人| 国产99久久久精品| 国产精品自在在线| 免费成人av在线播放| 中文字幕在线不卡| 3751色影院一区二区三区| 91女厕偷拍女厕偷拍高清| 国产99久久久国产精品免费看| 奇米色777欧美一区二区| 午夜久久久久久| 美女www一区二区| 麻豆一区二区99久久久久| 日韩电影免费在线观看网站| 蜜臀av一级做a爰片久久| 蜜臀av在线播放一区二区三区| 婷婷综合五月天| 国产一区二区在线免费观看| 国产高清不卡一区| 99麻豆久久久国产精品免费优播| 欧洲一区在线电影| 欧美肥妇bbw| 中文字幕av不卡| 九九九精品视频| 一本久道久久综合中文字幕| 制服.丝袜.亚洲.中文.综合| 国产日韩亚洲欧美综合| 亚洲国产综合91精品麻豆| 国产宾馆实践打屁股91| 精品污污网站免费看| 日韩欧美国产一二三区| 亚洲欧洲成人av每日更新| 日韩av成人高清| 欧美综合在线视频| 中文字幕欧美激情| 久久www免费人成看片高清| 一本色道a无线码一区v| 久久新电视剧免费观看| 亚洲综合视频在线| 不卡一二三区首页| 福利一区在线观看| 亚洲午夜激情av| 91亚洲男人天堂| 国产目拍亚洲精品99久久精品| 亚洲成av人片在www色猫咪| 成人免费黄色大片| 亚洲国产精品t66y| 国产精品1区二区.| 精品国精品国产尤物美女| 日韩主播视频在线| 欧美一区永久视频免费观看| 日本va欧美va精品| 久久久精品一品道一区| 国产寡妇亲子伦一区二区| 亚洲色欲色欲www| 欧美剧在线免费观看网站| 久久99精品久久只有精品| 欧美成人官网二区| 粉嫩一区二区三区在线看| 亚洲欧美激情一区二区| 91 com成人网| 成人av免费在线观看| 日韩电影一区二区三区四区| 久久综合久久99| 欧美私人免费视频| 成人午夜电影网站| 久久国产剧场电影| 亚洲国产成人91porn| 国产日产精品1区| 欧美男男青年gay1069videost| 国产xxx精品视频大全| 久久国产精品露脸对白| 综合久久综合久久| 久久久av毛片精品| 精品国产三级电影在线观看| 欧美精品三级在线观看| 欧美又粗又大又爽| 国产精品亚洲第一| 经典三级在线一区| 婷婷亚洲久悠悠色悠在线播放| 亚洲国产激情av| 亚洲午夜国产一区99re久久| 天堂va蜜桃一区二区三区| 久久99久国产精品黄毛片色诱| 久久99国产精品久久| 国产原创一区二区三区| 久久99久久99精品免视看婷婷| 视频一区视频二区在线观看| 午夜精品一区二区三区三上悠亚| 国产欧美一区在线| 国产精品人人做人人爽人人添| 国产精品―色哟哟| 一区二区三区在线视频免费观看| 亚洲一本大道在线| 一区二区三区欧美激情| 亚洲va在线va天堂| 青青草97国产精品免费观看 | 99久久婷婷国产综合精品电影| 91麻豆swag| 欧美成人一区二区三区片免费| 欧美一级一级性生活免费录像| 欧美大度的电影原声| 国产精品久久影院| 另类小说色综合网站| 日本精品免费观看高清观看| 26uuu久久天堂性欧美| 亚洲成人av一区二区三区| 成人app在线观看| 精品电影一区二区三区| 天天色 色综合| aaa欧美色吧激情视频| 欧美电视剧免费观看| 麻豆一区二区三区| 日韩视频一区二区三区| 亚洲黄色片在线观看| 国内成人免费视频| 欧美一级专区免费大片| 亚洲一区二区在线观看视频 | 在线观看一区日韩| 亚洲欧美国产毛片在线| 成人午夜私人影院| 欧美精品一区二区蜜臀亚洲| 丰满放荡岳乱妇91ww| 久久精品这里都是精品| 中文字幕高清一区| 国产一区二区三区国产| 26uuu亚洲| 看电影不卡的网站| 欧美日韩小视频| 日本91福利区| 久久久亚洲午夜电影| 不卡一卡二卡三乱码免费网站| 国产精品成人网| 欧美日韩高清一区| 国产在线视频一区二区| 亚洲视频图片小说| 日韩一级免费观看| 国产精品资源在线| 欧美日韩在线三级| 成人激情电影免费在线观看| 午夜精品久久一牛影视| 日韩亚洲欧美中文三级| 99热99精品| 国内精品在线播放| 午夜精品福利视频网站| 亚洲欧美视频在线观看| 亚洲欧洲精品一区二区三区不卡| 国产精品人成在线观看免费| 夜夜夜精品看看| 男男gaygay亚洲|