tp5之行為整理


原文:http://www.thinkphp.cn/topic/38941.html

在應用或模塊下建 behavior目錄,目錄內建行為類文件Test.php(以下以home模塊為例)

  1. namespace app\home\behavior;//注意應用或模塊的不同命名空間
  2. class Test {
  3.     public function run(&$params){
  4.         echo $params;
  5.     }
  6. }
復制代碼

方法一
1.在入口文件中,增加: define('APP_HOOK',true);
2.home模塊下建tags.php文件定義行為

  1. return [
  2.     'app_init'=> [
  3.         'app\\home\\behavior\\Test', //注意行為的命名空間(下同)
  4.     ],
  5.     'zzzzz'=> [//自定義標簽位
  6.         'app\\home\\behavior\\Test',
  7.     ],
  8.     //.................
  9. ];
復制代碼

3.控制器方法內需要的地方偵聽行為

  1. \think\Hook::listen('app_init',$params);//參數為變量(下同)
  2. \think\Hook::listen('zzzzz',$params);//自定義
復制代碼

方法二
1.home模塊的公共文件(common.php)或控制器方法內綁定行為到標簽位

  1. \think\Hook::add('app_init','app\\home\\behavior\\Test');
  2. \think\Hook::add('zzzz','app\\home\\behavior\\Test');//自定義
復制代碼

2.控制器方法內需要的地方偵聽行為

  1. \think\Hook::listen('app_init',$params);
  2. \think\Hook::listen('zzzzz',$params);//自定義
復制代碼

方法三
在控制器方法內需要的地方直接執行行為

  1. \think\Hook::exec('app\\home\\behavior\\Test','run',$params);
復制代碼


方法四
在控制器方法內直接使用閉包函數

  1. $a='閉包函數';
  2. \think\Hook::add('zzzz',function($a){ var_dump($a);});
  3. \think\Hook::listen('zzzz',$a);
復制代碼

方法五
行為類綁定到多個標簽
1.Test.php定義如下:

  1. namespace app\home\behavior;
  2. class Test {
  3.     public function app_init(&$params){
  4.         echo 'app_init';
  5.     }
  6.     public function app_end(&$params){
  7.         echo 'app_end';
  8.     }
  9. }
復制代碼

2.home模塊的公共文件(common.php)或控制器方法內綁定行為到標簽位

  1. \think\Hook::add('app_init','app\\home\\behavior\\Test');
  2. \think\Hook::add('app_end','app\\home\\behavior\\Test');
復制代碼

3.控制器方法內需要的地方偵聽行為

  1. \think\Hook::listen('app_init',$params);
  2. \think\Hook::listen('app_end',$params);
復制代碼


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM