TP5 行為Behavior用法說明


TP5 行為Behavior用法說明

無論是tp3還是在tp5中,行為都是一個非常重要的概念,關於太多的理論知識,就不多說了,不了解的請查看開發文檔:TP5 行為概述

以下,就由代碼來一步一步實現行為定義、綁定以及執行的過程

一、行為定義

首先定義一個簡單的行為,就是直接返回參數

 1 namespace app\admin\behavior;  2 
 3 class Test  4 {  5     public function run(&$title)  6  {  7         return $title;  8  }  9 
10     public function Fun1() 11  { 12         return 5; 13  } 14 
15     public function TestOrder() 16  { 17         return 1; 18  } 19 }

 二、行為綁定及觸發

行為定義完成后,就需要綁定到某個標簽位置才能生效,否則是不會執行的。

使用Hook類的add方法注冊行為,

1、標簽位fun1在行為類Test方法列表中,所以執行fun1方法,即使標簽位定義為FUn1,照樣執行

1  $title = '我是title'; 2  Hook::add('FUn1','app\\admin\\behavior\\Test'); 3  dump(Hook::listen('FUn1',$title));die;

結果為:

1 array(1) { 2   [0] => int(5) 3 }

2、標簽位abc不在行為類Test方法列表中,所以默認執行run方法,如果連run方法不存在,那就報錯了,提示run方法不存在,詳見Hook類的exec方法說明

1  $title = '我是title'; 2  Hook::add('abc','app\\admin\\behavior\\Test'); 3  dump(Hook::listen('abc',$title));die;

結果為:

1 array(1) { 2   [0] => string(11) "我是title"
3 }

3、在tp5.0.4版本以上,如果行為類Test中方法采用駝峰法命名,要想標簽位與之對應,則寫成test_order

1  $title = '我是title'; 2  Hook::add('test_order','app\\admin\\behavior\\Test'); 3  dump(Hook::listen('test_order',$title));die;

結果為:

1 array(1) { 2   [0] => int(1) 3 }

補充:行為綁定,也支持閉包,形如:

1  Hook::add('abc',function ($title){ 2      return $title; 3  });


免責聲明!

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



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