zoukankan      html  css  js  c++  java
  • TP5 行为Behavior用法说明

    TP5 行为Behavior用法说明

    无论是tp3还是在tp5中,行为都是一个非常重要的概念,关于太多的理论知识,就不多说了,不了解的请查看开发文档:TP5 行为概述

    以下,就由代码来一步一步实现行为定义、绑定以及执行的过程

    一、行为定义

    首先定义一个简单的行为,就是直接返回参数

     1 namespace appadminehavior;
     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  });
  • 相关阅读:
    GTK+中的树状列表构件(GtkTreeView)
    [TOP]疯狂的投资
    多线程模式之MasterWorker模式
    一年读书总结
    Microsoft Visual Studio正忙解决办法
    使用vs自带的性能诊断工具
    C#中的扩展方法
    从委托、匿名方法到Lambda
    c#中的事件
    sqlserver中创建包含事务的存储过程
  • 原文地址:https://www.cnblogs.com/cyfblogs/p/10283760.html
Copyright © 2011-2022 走看看