文档章节

Yii2学习笔记(八):行为Behavior的使用

botkenni
 botkenni
发布于 2017/02/23 16:52
字数 327
阅读 16
收藏 0

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

注意:Behavior只能与Component类绑定

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

下面是两个例子:

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

(1)MyBehavior.php

  1. <?php  
  2. namespace app\models;  
  3. use yii\base\Behavior;  
  4. ?>  
  5. <?  
  6. class MyBehavior extends Behavior  
  7. {  
  8.     public $propertyTest='this is MyBehavior propertyTest';  
  9.     public function methodTest()  
  10.     {  
  11.         echo 'this is MyBehavior methodTest';  
  12.     }  
  13.   
  14. }  
  15. ?>  

(2)MyBehaviorAttachClass.php

  1. <?php  
  2. namespace app\models;  
  3. use yii\base\component;  
  4. ?>  
  5. <?  
  6. class MyBehaviorAttachClass extends component  
  7. {  
  8.   
  9. }  
  10. ?>  


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

  1. public function actionBehavior()  
  2.     {  
  3.         $MyBehavior=new MyBehavior;  
  4.         $MyBehaviorAttachClass=new MyBehaviorAttachClass;  
  5.         $MyBehaviorAttachClass->attachBehavior('MyBehavior',$MyBehavior);  
  6.         echo $MyBehaviorAttachClass->propertyTest;  
  7.         echo $MyBehaviorAttachClass->methodTest();  
  8.     }  


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

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

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

下面是gii_test.php,位于models下

  1. class gii_test extends \yii\db\ActiveRecord  
  2. {  
  3.      
  4. public function behaviors()  
  5. {  
  6. return [  
  7.             [  
  8.                 'class' => TimestampBehavior::className(),  
  9.                 'attributes' => [  
  10.                     ActiveRecord::EVENT_BEFORE_INSERT => ['created_at'],//其中created_at和updated_at是gii_test数据表的字段名,必须设置为int才能显示时间戳  
  11.                     ActiveRecord::EVENT_BEFORE_UPDATE => ['updated_at'],//否则显示00000000  
  12.                 ],  
  13.             ],  
  14.         ];  
  15.    }  
  16. }  

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

  1. use yii\db\Expression;  
  2. public function behaviors()  
  3. {  
  4.      return [  
  5.          [  
  6.              'class' => TimestampBehavior::className(),  
  7.              'createdAtAttribute' => 'created_at',  
  8.              'updatedAtAttribute' => 'updated_at',  
  9.              'value' => new Expression('NOW()'),  
  10.          ],  
  11.      ];  
  12. }  

© 著作权归作者所有

共有 人打赏支持
botkenni
粉丝 17
博文 405
码字总数 433796
作品 0
西城
程序员
私信 提问
yii2 - Behavior 实例及源码分析

Behavior 的简述 行为简单来说是组件的扩展,可以对组件的属性,方法,事件 (yii2组件的三大要点)进行扩展而无需改动组件现有的代码逻辑。即此行为所拥有的属性,方法,事件,都会被绑定它...

big_cat
2016/06/01
811
0
Yii2 源码分析 - 入口文件执行流程

以 yii 2.0.14 高级版的 frontend 为例,从 frontend/web/index.php 开始 入口文件看着就这么几行,简单的很,那他是怎么通过这几行来运行应用的呢?先看 Yii.php 内的逻辑 接下来,就是重头...

botkenni
05/03
0
0
yii2 - Property 之 默认构造方法 和 setter/getter 方法

yii2 内部规定了 construct 函数的构造形式,以键值对儿数组作为参数,进行属性的初始化,但要注意给属性赋值的工作是转交给基类 yiibaseYii::configure 方法的,故无法直接访问本类的私有属...

big_cat
2016/05/27
530
0
技术积累笔记概要

2015年11月24日 1、rest 速率限制,写属于自己的方法。 2、actions方法深刻了解。 3、YII技术博客:http://blog.csdn.net/terrywater/article/category/2565815。 4、静态方法传递参数的习惯...

风清扬-深圳
2015/11/24
78
0
实用的Laravel Debug调试工具

转载请注明: 转载自Yuansir-web菜鸟 | LAMP学习笔记 本文链接地址: 实用的Laravel Debug调试工具 主要推荐laravel几个适合开发调试用的工具 1.Clockwork 首先Chrome 插件 Clockwork 安装 Co...

Yuansir
2015/01/19
0
2

没有更多内容

加载失败,请刷新页面

加载更多

撬动世界的支点——《引爆点》读书笔记2900字优秀范文

撬动世界的支点——《引爆点》读书笔记2900字优秀范文: 作者:挽弓如月。因为加入火种协会的读书活动,最近我连续阅读了两本论述流行的大作,格拉德威尔的《引爆点》和乔纳伯杰的《疯传》。...

原创小博客
21分钟前
0
0
《配电网自动化技术》第一章

写了配电网的组成、历程、难点、存在问题、解决方案,还是蛮好的。尤其是各地建设的系统后续又无法实用化,以及多种终端反而增加了运维工作量等,都是目前切实存在的让大家不停吐槽的内容。

max佩恩
26分钟前
0
0

中国龙-扬科
44分钟前
2
0
使用vuex的state状态对象的5种方式

vuex是一个专门为vue.js设计的状态管理模式,并且也可以使用devtools进行调试。 下面给大家来贴一下我的vuex的结构 下面是store文件夹下的state.js和index.js内容 //state.jsconst state =...

peakedness丶
48分钟前
2
0
NetCore MVC Demo

地址:http://114.116.9.72:5411

whltian
55分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部