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 });
多学、
多记、
多练、