国产精品成人VA在线观看,亚洲日韩在线中文字幕综合,亚洲AV电影天堂男人的天堂,久久人人爽人人爽人人av东京热

News新聞

業(yè)界新聞動態(tài)、技術(shù)前沿
Who are we?

您的位置:首頁      樂道系統(tǒng)FAQ      老生常談ThinkPHP中的行為擴(kuò)展和插件(推薦)

老生常談ThinkPHP中的行為擴(kuò)展和插件(推薦)

標(biāo)簽: 發(fā)布日期:2017-05-05 00:00:00 278

原理分析

將標(biāo)簽與類之間的對應(yīng)關(guān)系(如'app_init'=>array('Common\Behavior\InitHook')),通過Hook類中import或add方法,加載到Hook類中靜態(tài)變量$tags中。當(dāng)執(zhí)行Hook中靜態(tài)方法listen或者exec方法的時候(listen方法中調(diào)用了exec),實例化標(biāo)簽對應(yīng)的類,調(diào)用相應(yīng)的方法(如果是插件,調(diào)用傳遞的方法,如果是行為,調(diào)用run方法)。

Hook中exec方法定義如下:

static public function exec($name, $tag,&$params=NULL) {
    if(false === strpos($name,'\\')) {
      // 插件(多個入口)
      $class  = "Addons\\{$name}\\{$name}Addon";
    }else{
      // 行為擴(kuò)展(只有一個run入口方法)
      $class  = $name.'Behavior';
      $tag  =  'run';
    }
    $addon  = new $class();
    return $addon->$tag($params);
  }