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  });
  • 相关阅读:
    得不到的永远在骚动
    这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧【转】
    Windows CMD命令大全【转】
    创业为什么选择北上广?
    为什么你还把时间浪费在无效人脉社交上?
    五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程
    mysql分区操作
    程序员常用网站
    4种提升SQL查询性能的知识
    获得局域网内其他成员的信息
  • 原文地址:https://www.cnblogs.com/cyfblogs/p/10283760.html
Copyright © 2011-2022 走看看