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

// 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中文网,转载请注明出处,感谢您的尊重!

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

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

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

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

    一个绑定了行为的类,表现起来是这样的: // 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. 分析 AIX 和 Linux 性能工具nmon
  2. 【 FPGA 】常数( localparam )和参数( parameter )
  3. mysql主从复制错误sql-running no
  4. 【Alpha】Daily Scrum Meeting第七次
  5. 性能测试工具Curl-Loader
  6. Altium designer中提示some net were not able to be matched问题解决办法
  7. Angular 7 和 .Net Core 2.2——全球天气(第1部分)
  8. 托管系统的mysql设计_PHP+MySQL托管中心管理系统的设计与实现
  9. python学习手册笔记
  10. 【Linux】NUC977移植使用libmodbus
  11. 串口线接法是什么 详细步骤介绍
  12. luogu P1069 细胞分裂
  13. Unity Shader - 搬砖日志 - URP PBR (抄作业篇,持续更新~)
  14. App Inventor学习环境搭建
  15. 恨一个人要比爱一个人付出更多的情感……
  16. uni-app 对接第三方h5
  17. 富爸爸财务自由之路——财富自由之路的七个步骤
  18. js输入框的联想功能
  19. .net生鲜超市销售系统
  20. 年轻貌美的小姐姐加我微信后竟要求我帮她做这种事...

热门文章

  1. Pandas大量Excel数据写入Mysql
  2. 杰理之关于 SPI 主机配置参数的几个说明:【篇】
  3. 酷狗android平板,安卓平板车载共享 体验酷狗音乐HD版
  4. 用大数据的眼光看师姐移民报告
  5. weex:构建weex项目及注意事项
  6. PY “不是内部或外部命令,也不是可运行的程序或批处理文件”
  7. Bypass上传与Bypass XSS
  8. 【计算机考研必备常识】24考研你开始准备了吗?
  9. redhat linux 系统修复,RedHat Linux系统修复—— grub引导、MBR损坏修复过程
  10. Python快速过一遍,重要知识点简单记录