人人人妻人人人妻人人人,99精品国产综合久久久久五月天 ,欧美白人最猛性XXXXX,日韩AV无码免费播放

News新聞

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

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

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

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

原理分析

將標(biāo)簽與類之間的對(duì)應(yīng)關(guān)系(如'app_init'=>array('Common\Behavior\InitHook')),通過(guò)Hook類中import或add方法,加載到Hook類中靜態(tài)變量$tags中。當(dāng)執(zhí)行Hook中靜態(tài)方法listen或者exec方法的時(shí)候(listen方法中調(diào)用了exec),實(shí)例化標(biāo)簽對(duì)應(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,'\\')) {
      // 插件(多個(gè)入口)
      $class  = "Addons\\{$name}\\{$name}Addon";
    }else{
      // 行為擴(kuò)展(只有一個(gè)run入口方法)
      $class  = $name.'Behavior';
      $tag  =  'run';
    }
    $addon  = new $class();
    return $addon->$tag($params);
  }