一个绑定了行为的类,表现起来是这样的:

// Step 1: 定义一个将绑定行为的类

class MyClass extends yii\base\Component

{

// 空的

}

// Step 2: 定义一个行为类,他将绑定到MyClass上

class MyBehavior extends yii\base\Behavior

{

// 行为的一个属性

public $property1 = 'This is property in MyBehavior.';

// 行为的一个方法

public function method1()

{

return 'Method in MyBehavior is called.';

}

}

$myClass = new MyClass();

$myBehavior = new MyBehavior();

// Step 3: 将行为绑定到类上

$myClass->attachBehavior('myBehavior', $myBehavior);

// Step 4: 访问行为中的属性和方法,就和访问类自身的属性和方法一样

echo $myClass->property1;

echo $myClass->method1();

上面的代码你不用全都看懂,虽然你可能已经用脚趾头猜到了这些代码的意思, 但这里你只需要记住行为中的属性和方法可以被所绑定的类像访问自身的属性和方法一样直接访问就OK了。 代码中, $myClass 是没有 property1 method() 成员的。这俩是 $myBehavior 的成员。 但是,通过 attachBehavior() 将行为绑定到对象之后, $myCalss 就好像练成了吸星大法、化功大法,表现的财大气粗,将别人的属性和方法都变成了自己的。

另外,从上面的代码中,你还要掌握使用行为的大致流程:

从 yii\base\Component 派生自己的类,以便使用行为;

从 yii\base\Behavior 派生自己的行为类,里面定义行为涉及到的属性、方法;

将Component和Behavior绑定起来;

像使用Component自身的属性和方法一样,尽情使用行为中定义的属性和方法。

使用行为,必须像前文描述的一样先把它附加到 yii\base\Component 类或其子类。一旦行为附加到组件,就可以直接使用它。

行为附加到组件后,可以通过组件访问一个行为的公共成员变量或 getter 和 setter 方法定义的属性:

// "prop1" 是定义在行为类的属性

echo $component->prop1;

$component->prop1 = $value;

类似地也可以调用行为的公共方法:

// foo() 是定义在行为类的公共方法

$component->foo();

如你所见,尽管 $component 未定义 prop1 和 foo() ,它们用起来也像组件自己定义的一样。

如果两个行为都定义了一样的属性或方法,并且它们都附加到同一个组件,那么首先附加上的行为在属性或方法被访问时有优先权。

附加行为到组件时的命名行为,可以使用这个名称来访问行为对象,如下所示:

$behavior = $component->getBehavior('myBehavior');

也能获取附加到这个组件的所有行为:

$behaviors = $component->getBehaviors();

移除行为

要移除行为,可以调用 yii\base\Component::detachBehavior() 方法用行为相关联的名字实现:

$component->detachBehavior('myBehavior1');

也可以移除全部行为:

$component->detachBehaviors();

php behaviors,详解在PHP的Yii框架中使用行为Behaviors的方法相关推荐

  1. php behaviors,详解在PHP的Yii框架中使用行为Behaviors的方法_php技巧

    一个绑定了行为的类,表现起来是这样的: // Step 1: 定义一个将绑定行为的类 class MyClass extends yii\base\Component { // 空的 } // Ste ...

  2. php behaviors,详解在PHP的Yii框架中使用行为Behaviors的方法_PHP

    一个绑定了行为的类,表现起来是这样的: // Step 1: 定义一个将绑定行为的类 class MyClass extends yii\base\Component { // 空的 } // Ste ...

  3. php behaviors,在PHP的Yii框架中使用行为Behaviors的方法

    一个绑定了行为的类,表现起来是这样的: // Step 1: 定义一个将绑定行为的类 class MyClass extends yii\base\Component { // 空的 } // Ste ...

  4. ABP 详解系列2:解析ABP框架中的数据传输对象与应用服务

    解析ABP框架中的数据传输对象与应用服务 ABP框架是基于ASP.NET的Web开发框架,在ABP中应用服务将领域逻辑暴露给展现层,展现层通过传入数据传输对象参数来调用应用服务,而这里我们就来解析AB ...

  5. php中yii的controller,详解PHP的Yii框架中的Controller控制器,yiicontroller

    详解PHP的Yii框架中的Controller控制器,yiicontroller 控制器是 MVC 模式中的一部分, 是继承yii\base\Controller类的对象,负责处理请求和生成响应. 具 ...

  6. 公开课报名 | 详解CNN-pFSMN模型以及在语音识别中的应用

    近年来,在深度学习技术的帮助下,语音识别取得了极大的进展,从实验室开始走向市场,走向实用化.基于语音识别技术的输入法.搜索和翻译等人机交互场景都有了广泛的应用. Librispeech是当前衡量语音识 ...

  7. 公开课 | 详解CNN-pFSMN模型以及在语音识别中的应用

    近年来,在深度学习技术的帮助下,语音识别取得了极大的进展,从实验室开始走向市场,走向实用化.基于语音识别技术的输入法.搜索和翻译等人机交互场景都有了广泛的应用. Librispeech是当前衡量语音识 ...

  8. 一致性协议raft详解(三):raft中的消息类型

    一致性协议raft详解(三):raft中的消息类型 前言 raft 节点 Raft中RPC的种类 RequestVote leader选举成功后 AppendEntries 请求参数 返回值 存储日志 ...

  9. 地面指示标志_详解消防应急照明和疏散指示系统的施工及安装方法消防施工

    详解消防应急照明和疏散指示系统的施工及安装方法消防施工 消防应急照明与疏散指示系统在生活中随处可见,相信您并不陌生,它是为人员疏散.消防作业提供照明和疏散指示的系统,由各类消防应急灯具及相关装置组成. ...

最新文章

  1. r语言中正定矩阵由于误差不正定_Kalman滤波在MOT中的应用(一)——理论篇
  2. PolarDB数据库性能大赛:95后徐妈的经验分享
  3. Ember.js系列文章
  4. NYOJ(21),BFS,三个水杯
  5. oracle19c怎么创建Scott,Oracle db-sample-schema-19c安装(scott hr oe pm ix sh bi用户创建部署)...
  6. Dart 4-Day
  7. vba for wps 7.0_两表数据核对,WPS表格真香
  8. 这些将在新一年改变你的风控内容
  9. 关系抽取---(三)基于文本的卷积神经网络(Text-CNN)的关系抽取
  10. 成熟有家男人与24岁女孩的精彩对白[推荐]
  11. Mean filter 和 Gaussian filter对比
  12. 使用VMProtect给软件加壳
  13. Node.js--下载、安装、配置
  14. 基于Qt的嵌入式监控系统
  15. bootstrap-入门学习-流体容器与响应式布局容器
  16. 自定义形状的ImageView制作
  17. 计算机论文答辩2分钟演讲稿,论文答辩演讲稿
  18. mac 用 VMware Fusion 安装 ubuntu
  19. Ardunio程序设计基础 一
  20. 注册会计师的待遇如何?职业发展怎么样?

热门文章

  1. 【Spring实战】----Security4.1.3鉴权之美--基于投票的AccessDecisionManager实现及源码分析
  2. z490 linux raid,PC硬件与外设 篇二十三:光威弈系列Pro Z490平台装机评测(含raid模式)...
  3. 三相光伏10KW并网逆变器。 全套原理图/PcB,源代码,均无实物
  4. 2022年T电梯修理操作证考试题模拟考试平台操作
  5. h5+app打开pdf,图片,excel,world(亲测可用)
  6. Penn Treebank词性标记集(符号说明)
  7. magento Shopping Cart Price Rule 购物车促销规则
  8. 动态规划6:买卖股票 I II III IV 冷却,共5题
  9. 今天的彩蛋来的有点急,请抓住!
  10. 新浪微博新增评论带图功能