Thinkphp3.2 行為擴(kuò)展和插件(Hook)實(shí)例詳解 方法一

轉(zhuǎn)載自 http://www.thinkphp.cn/topic/21323.html
ThinkPHP3.2.2 行為(Behavior)擴(kuò)展以及插件(Plug or Hook)詳解(含實(shí)例)
概述:
行為(Behavior)是ThinkPHP擴(kuò)展機(jī)制中比較關(guān)鍵的一項(xiàng)擴(kuò)展怪嫌,行為既可以獨(dú)立調(diào)用匆骗,也可以綁定到某個(gè)標(biāo)簽中進(jìn)行偵聽泛领,官方提出的CBD模式中行為也占了主要的地位,可見行為在ThinkPHP框架中意義非凡算墨。
這里指的行為是一個(gè)比較抽象的概念,你可以想象成在應(yīng)用執(zhí)行過程中的一個(gè)動(dòng)作或者處理蘸鲸,在框架的執(zhí)行流程中噪伊,各個(gè)位置都可以有行為產(chǎn)生,例如路由檢測是一個(gè)行為磁携,靜態(tài)緩存是一個(gè)行為褒侧,用戶權(quán)限檢測也是行為,大到業(yè)務(wù)邏輯谊迄,小到瀏覽器檢測闷供、多語言檢測等等都可以當(dāng)做是一個(gè)行為,甚至說你希望給你的網(wǎng)站用戶的第一次訪問彈出Hello统诺,world歪脏!這些都可以看成是一種行為,行為的存在讓你無需改動(dòng)框架和應(yīng)用粮呢,而在外圍通過擴(kuò)展或者配置來改變或者增加一些功能唾糯。
而不同的行為之間也具有位置共同性,比如鬼贱,有些行為的作用位置都是在應(yīng)用執(zhí)行前移怯,有些行為都是在模板輸出之后,我們把這些行為發(fā)生作用的位置稱之為標(biāo)簽(位)这难,當(dāng)應(yīng)用程序運(yùn)行到這個(gè)標(biāo)簽的時(shí)候舟误,就會(huì)被攔截下來,統(tǒng)一執(zhí)行相關(guān)的行為姻乓,類似于AOP編程中的“切面”的概念嵌溢,給某一個(gè)切面綁定相關(guān)行為就成了一種類AOP編程的思想眯牧。(摘抄 :http://www.thinkphp.cn/info/249.html),對咯,如果你不懂”切面“這個(gè)概念赖草,最好是先度娘下学少。

一、實(shí)例:(以下代碼演示均基于 ThinkPHP3.2.2,未修改任何文件和目錄結(jié)構(gòu))秧骑,做一個(gè)ad(廣告)的鉤子

1.如果我們想在模板上調(diào)用例如{:tag('example',array('name'=>'name','value'=>'value'))} 這樣的方法版确,首先我們到 ThinkPHP->Common->functions.php,你會(huì)搜到 tag 這個(gè)方法,哈哈乎折,我有強(qiáng)迫癥绒疗,復(fù)制下 tag 方法,修改為

function hook($hook,$params=array()){
    \Think\Hook::listen($hook,$params);        //監(jiān)聽一個(gè)鉤子
}

2.在控制器中 Application->Home->Controller->IndexController.class.php 添加如下代碼:

namespace Home\Controller;
use Think\Controller;
use Think\Hook;
class IndexController extends Controller {
    public function index(){
        Hook::add('ad','Behavior\\adBehavior'); //我種下一顆子骂澄,終于長出了果實(shí)(摘抄《小蘋果》歌詞)
        $this->display();
    }
}

3.來新建一個(gè)行為取名叫ad(廣告)吓蘑,ThinkPHP->Library->Behavior->adBehavior.class.php

    namespace Behavior;
    class adBehavior{
        function run($arg){
            echo '我是一條'.$arg['name'].'廣告,'.$arg['value'].'代言';        //在此介紹下,run必須的 坟冲,細(xì)心的會(huì)在Think核心找到Behavior.class.php里面有這樣一句操蛋的話  abstract public function run(&$params); 你懂的
        }
    }

4.在模板中使用 Application->Home->View->Index->index.html 添加如下代碼:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head>
    <title>ThinkPHP3.2.2 行為(Behavior)擴(kuò)展以及插件(Plug or Hook)詳解(含實(shí)例)
</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="description" content="Hook使用方法" />
</head>
<body>
    <h1>How to used?</h1>
    {:hook('ad', array('name'=>'AV','value'=>'*老師'))}
</body>
</html>

感覺這個(gè)用的不爽磨镶,下一篇還是找個(gè)更詳細(xì)的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末健提,一起剝皮案震驚了整個(gè)濱河市棋嘲,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌矩桂,老刑警劉巖沸移,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異侄榴,居然都是意外死亡雹锣,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門癞蚕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蕊爵,“玉大人,你說我怎么就攤上這事桦山≡苌洌” “怎么了?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵恒水,是天一觀的道長会放。 經(jīng)常有香客問我,道長钉凌,這世上最難降的妖魔是什么咧最? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上矢沿,老公的妹妹穿的比我還像新娘滥搭。我一直安慰自己,他們只是感情好捣鲸,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布瑟匆。 她就那樣靜靜地躺著,像睡著了一般栽惶。 火紅的嫁衣襯著肌膚如雪愁溜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天媒役,我揣著相機(jī)與錄音,去河邊找鬼宪迟。 笑死酣衷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的次泽。 我是一名探鬼主播穿仪,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼意荤!你這毒婦竟也來了啊片?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤玖像,失蹤者是張志新(化名)和其女友劉穎紫谷,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捐寥,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡笤昨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了握恳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瞒窒。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖乡洼,靈堂內(nèi)的尸體忽然破棺而出崇裁,到底是詐尸還是另有隱情,我是刑警寧澤束昵,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布拔稳,位于F島的核電站,受9級特大地震影響锹雏,放射性物質(zhì)發(fā)生泄漏壳炎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望匿辩。 院中可真熱鬧腰耙,春花似錦、人聲如沸铲球。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽稼病。三九已至选侨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間然走,已是汗流浹背援制。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芍瑞,地道東北人晨仑。 一個(gè)月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像拆檬,于是被迫代替她去往敵國和親洪己。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容