佳木斯湛栽影视文化发展公司

主頁(yè) > 知識(shí)庫(kù) > Thinkphp 框架擴(kuò)展之行為擴(kuò)展原理與實(shí)現(xiàn)方法分析

Thinkphp 框架擴(kuò)展之行為擴(kuò)展原理與實(shí)現(xiàn)方法分析

熱門標(biāo)簽:Mysql連接數(shù)設(shè)置 團(tuán)購(gòu)網(wǎng)站 Linux服務(wù)器 阿里云 銀行業(yè)務(wù) 電子圍欄 科大訊飛語(yǔ)音識(shí)別系統(tǒng) 服務(wù)器配置

本文實(shí)例講述了Thinkphp 框架擴(kuò)展之行為擴(kuò)展原理與實(shí)現(xiàn)方法。分享給大家供大家參考,具體如下:

系統(tǒng)核心提供的標(biāo)簽位置包括下面幾個(gè)(按照?qǐng)?zhí)行順序排列):

app_init 應(yīng)用初始化標(biāo)簽位
path_info PATH_INFO檢測(cè)標(biāo)簽位
app_begin 應(yīng)用開(kāi)始標(biāo)簽位
action_name 操作方法名標(biāo)簽位
action_begin 控制器開(kāi)始標(biāo)簽位
view_begin 視圖輸出開(kāi)始標(biāo)簽位
view_parse 視圖解析標(biāo)簽位
template_filter 模板內(nèi)容解析標(biāo)簽位
view_filter 視圖輸出過(guò)濾標(biāo)簽位
view_end 視圖輸出結(jié)束標(biāo)簽位
action_end 控制器結(jié)束標(biāo)簽位
app_end 應(yīng)用結(jié)束標(biāo)簽位

在每個(gè)標(biāo)簽位置,可以配置多個(gè)行為定義,行為的執(zhí)行順序按照定義的順序依次執(zhí)行。除非前面的行為里面中斷執(zhí)行了(某些行為可能需要中斷執(zhí)行,例如檢測(cè)機(jī)器人或者非法執(zhí)行行為),否則會(huì)繼續(xù)下一個(gè)行為的執(zhí)行。 行為定義: 通過(guò)Common\Conf\tags.php配置文件定義,格式如下:

?php
return array(
  'action_begin'=>array('Home\\Behaviors\\TestBehavior','Home\\Behaviors\\Test1Behavior'), 
);

上面注冊(cè)了兩個(gè)行為,分別是Home模塊下的test和test1行為,類文件位于Home模塊目錄下的Behaviors目錄,可以自定義目錄。

行為必須是一個(gè)包含命名空間路徑的類,如上的 Home\Behaviors\TestBehavior 對(duì)應(yīng)的類是 Home/Behaviors/TestBehavior.class.php。

除了這些系統(tǒng)內(nèi)置標(biāo)簽之外,開(kāi)發(fā)人員還可以在應(yīng)用中添加自己的應(yīng)用標(biāo)簽。 比如在控制器的_initialize方法中:

\Think\Hook::add('action_begin','Home\\Behaviors\\TestBehavior');
//同時(shí)添加多個(gè)行為,只要將第二個(gè)參數(shù)換成數(shù)組即可。

行為類的定義,以上面的test行為為例:

?php
namespace Home\Behaviors;
class TestBehavior extends \Think\Behavior{
  //行為執(zhí)行入口
  public function run($param){
 
  }
}

行為類建議繼承\Think\Behavior,必須實(shí)現(xiàn)run($param)方法,行為是通過(guò)這個(gè)方法執(zhí)行的。

行為的觸發(fā): 只要在合適的地方通過(guò)以下代碼

\Think\Hook::listen('標(biāo)簽名'[,參數(shù)]);
// 或者
// tag('標(biāo)簽名'[,參數(shù)]);

當(dāng)應(yīng)用執(zhí)行到這個(gè)地方的時(shí)候?qū)⒆詣?dòng)觸發(fā)指定標(biāo)簽名下的所有行為類。

isten方法可以傳入并且只接受一個(gè)參數(shù),如果需要傳入多個(gè)參數(shù),請(qǐng)使用數(shù)組,該參數(shù)為引用傳值,所以只能傳入變量。 參數(shù)可以被run($param)中的$param接收。

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

希望本文所述對(duì)大家基于ThinkPHP框架的PHP程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • thinkphp 框架數(shù)據(jù)庫(kù)切換實(shí)現(xiàn)方法分析
  • Thinkphp 框架配置操作之動(dòng)態(tài)配置、擴(kuò)展配置及批量配置實(shí)例分析
  • Thinkphp 框架配置操作之配置加載與讀取配置實(shí)例分析
  • Thinkphp 框架基礎(chǔ)之入口文件功能、定義與用法分析
  • Thinkphp 框架基礎(chǔ)之源碼獲取、環(huán)境要求與目錄結(jié)構(gòu)分析
  • Thinkphp 框架擴(kuò)展之驅(qū)動(dòng)擴(kuò)展實(shí)例分析
  • Thinkphp 框架擴(kuò)展之應(yīng)用模式實(shí)現(xiàn)方法分析
  • Thinkphp 框架擴(kuò)展之Widget擴(kuò)展實(shí)現(xiàn)方法分析
  • Thinkphp 框架擴(kuò)展之標(biāo)簽庫(kù)驅(qū)動(dòng)原理與用法分析
  • 淺談PHP之ThinkPHP框架使用詳解

標(biāo)簽:江蘇 衡水 蚌埠 衢州 廣元 大理 萍鄉(xiāng) 棗莊

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Thinkphp 框架擴(kuò)展之行為擴(kuò)展原理與實(shí)現(xiàn)方法分析》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    襄城县| 永安市| 和林格尔县| 寻乌县| 建湖县| 鹤岗市| 平塘县| 辽宁省| 喀什市| 洛阳市| 尖扎县| 平顶山市| 合阳县| 四会市| 横山县| 蓝山县| 仁怀市| 调兵山市| 德保县| 南木林县| 望都县| 临澧县| 城口县| 阜康市| 英吉沙县| 彩票| 曲松县| 获嘉县| 连江县| 哈巴河县| 太仆寺旗| 藁城市| 阿瓦提县| 嘉黎县| 鄂伦春自治旗| 南宫市| 宁津县| 建水县| 东辽县| 牟定县| 博乐市|