行为Behavior的使用

原文地址:http://www.it610.com/article/4918541.htm

行为就是继承yii\base\behavior,可以绑定到任意yii\base\compent实例上,然后这个compent实例就拥有了行为类所具有的属性和方法;

注意:Behavior只能与Component类绑定

参考出处:http://www.digpage.com/behavior.html

下面是两个例子:

1、分别定义行为类MyBehavior.php和组件类MyBehaviorAttachClass.php

(1)MyBehavior.php


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<?php

namespace app\models;

use yii\base\Behavior;

?>

<?

class MyBehavior extends Behavior

{

    public $propertyTest=‘this is MyBehavior propertyTest‘;

    public function methodTest()

    {

        echo ‘this is MyBehavior methodTest‘;

    }

}

?>

(2)MyBehaviorAttachClass.php


1

2

3

4

5

6

7

8

9

10

<?php

namespace app\models;

use yii\base\component;

?>

<?

class MyBehaviorAttachClass extends component

{

}

?>

(3)控制器中写个方法,以便演示时调用


1

2

3

4

5

6

7

8

public function actionBehavior()

    {

        $MyBehavior=new MyBehavior;

        $MyBehaviorAttachClass=new MyBehaviorAttachClass;

        $MyBehaviorAttachClass->attachBehavior(‘MyBehavior‘,$MyBehavior);

        echo $MyBehaviorAttachClass->propertyTest;

        echo $MyBehaviorAttachClass->methodTest();

    }

此时运行r=hello/Behavior就会显示如下界面:

2、在ActiveRecord中调用行为,这种属于静态调用,直接在类中写个behaviors方法就可以了

详情看:http://www.yiichina.com/question/807

下面是gii_test.php,位于models下


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

class gii_test extends \yii\db\ActiveRecord

{

   

public function behaviors()

{

return [

            [

                ‘class‘ => TimestampBehavior::className(),

                ‘attributes‘ => [

                    ActiveRecord::EVENT_BEFORE_INSERT => [‘created_at‘],//其中created_at和updated_at是gii_test数据表的字段名,必须设置为int才能显示时间戳

                    ActiveRecord::EVENT_BEFORE_UPDATE => [‘updated_at‘],//否则显示00000000

                ],

            ],

        ];

   }

}

如果需要保留字段属性为 timestamp ,可以使用如下方法自动填充:


1

2

3

4

5

6

7

8

9

10

11

12

use yii\db\Expression;

public function behaviors()

{

     return [

         [

             ‘class‘ => TimestampBehavior::className(),

             ‘createdAtAttribute‘ => ‘created_at‘,

             ‘updatedAtAttribute‘ => ‘updated_at‘,

             ‘value‘ => new Expression(‘NOW()‘),

         ],

     ];

}

时间: 2024-10-18 08:44:21

行为Behavior的使用的相关文章

Yii2 behavior运用

1 class ReturnDataTypeBehaviors extends Behavior 2 { 3 4 public $type = 'json'; 5 public $pcOrMobile = 'pc'; // or mobile 6 7 //控制器执行之后事件 8 public function events() 9 { 10 return [Controller::EVENT_BEFORE_ACTION => 'beforeType']; 11 } 12 13 /** 14 *

WPF Interaction框架简介(一)——Behavior

在WPF 4.0中,引入了一个比较实用的库——Interactions,这个库主要是通过附加属性来对UI控件注入一些新的功能,除了内置了一系列比较好用的功能外,还提供了比较良好的扩展接口.本文这里简单的介绍一下Behavior这个扩展. 顾名思义,Behavior可以赋予控件新的行为能力,例如,我们可以通过MouseDragElementBehavior给控件附加上支持拖放的能力.使用方式如下: 添加Interactions库的引用.主要添加如下两个DLL:Microsoft.Expressio

Unity中的行为树插件:Behavior Designer

外国技术人员的插件:http://www.opsive.com/assets/BehaviorDesigner 目前公司内部比较推崇的行为树插件就是这个,虽然有其他几个同类的竞品. 说一句题外话,优秀的插件总是外国人开发的,并且可以将插件开发做成一个小工作室或者个人的主要收入来源,但没看到国人有类似的作品出现. 行为树的概念出现已经很多年了,总的来说,就是使用各种经典的控制节点+行为节点进行组合,从而实现复杂的AI.目前在游戏中一般复杂的AI都可以看到行为树的身影,简单的AI可以使用状态机来实现

Behavior trees for AI: How they work

http://www.gamasutra.com/blogs/ChrisSimpson/20140717/221339/Behavior_trees_for_AI_How_they_work.php by Chris Simpson on 07/17/14 09:35:00 pm       27 comments       The following blog post, unless otherwise noted, was written by a member of Gamasutra

使用行为树(Behavior Tree)实现游戏AI

原地址:http://blog.csdn.net/akara/article/details/6084786 [原创]使用行为树(Behavior Tree)实现游戏AIby AKara 2010-12-09 @ http://blog.csdn.net/akara @ akarachen(at)gmail.com @weibo.com/akaras 谈到游戏AI,很明显智能体拥有的知识条目越多,便显得更智能,但维护庞大数量的知识条目是个噩梦:使用有限状态机(FSM),分层有限状态机(HFSM)

使用行为树(Behavior Tree)实现网游奖励掉落系统

原地址:http://blog.csdn.net/akara/article/details/6165421 [原创]使用行为树(Behavior Tree)实现网游奖励掉落系统by AKara 2011-01-24 @ http://blog.csdn.net/akara @ akarachen(at)gmail.com @weibo.com/akaras 奖励/掉落系统,涵盖物品,经验,金钱等网游中可直接给予玩家的元素.一个简单,直观,可扩展的掉落系统对网游中的产出控制起非常重要的作用. 奖

UISearchController Attempting to load the view of a view controller while it is deallocating is not allowed and may result in undefined behavior

Attempting to load the view of a view controller while it is deallocating is not allowed and may result in undefined behavior (<UISearchController: 0x7f9c28c9d740>) 出现此类错误的时候很是头疼,因为这是 iOS9.0之类才会出现的错误,具体表现就是当 UISearchBar 出现的时候控制台就会输入此类的信息: 其实也很好解决,可以

CoordinatorLayout高级用法-自定义Behavior

在新的support design中,CoordinatorLayout可以说是最重要的一个控件了,CoordinatorLayout给我们带来了一种新的事件的处理方式--behavior,你是不是还记得我们在使用CoordinatorLayout的时候,一些子view需要一段, app:layout_behavior="@string/appbar_scrolling_view_behavior" 这样的xml配置?当时我们不知道这是干嘛的,直接照用就行了,后来发现这玩意是一个类!而

[Reactive Programming] RxJS dynamic behavior

This lesson helps you think in Reactive programming by explaining why it is a beneficial paradigm for programming. See how reactive programming helps you understand the dynamic behavior of a value evolving over time. It allows you to specify the dyna

[Unity插件]Behavior Designer:制作敌人AI

一个简单的敌人AI: 当处于监视范围内,跑向玩家:当处于攻击范围内,攻击玩家:否则呆在原地.用行为树表示就是: 其中当前行为树的变量与全局变量为: 效果图: 制作简单的AI确实不需要写代码,不过配置起来确实有点麻烦了.可以根据需求,编写自定义的节点来组成复杂的AI. 当游戏需要大量的AI时,Behavior Designer确实是一个不错的选择,因为自定义的节点可以不断被重用了.