前言
Component
算是yii最核心的基础类了,同时实现了事件和 BehaviorComponent
虽然继承与 Object
,但为了实现 Behavior 对象的属性和方法的注入, Component
重写了 Object
中所有和调用属性和方法有关的方法。原理也很简单,就是在当前对象找不到的属性或方法,在绑定的行为里再找一遍
例如调用不存在的方法的时候
Event-事件功能
$handler 事件处理程序
相关属性
|
|
事件的绑定
|
|
事件的解除
|
|
事件的触发
|
|
查看事件是否绑定绑定
|
|
行为功能
所为的行为就是将注册到当前component中的行为类的属性和方法当做自己的使用
行为需要行为类 Behavior 和 Component 类结合使用
相关属性
|
|
注册行为的原理
要使用行为肯定是先要进行注册的,component中大多数方法会调用 ensureBehaviors() 方法来先确认绑定,我们来看一下逻辑
会发现在注册行为对象的时候,行为对象会把它里面定义的事件注册到当前对象
使用行为的原理
前面说了, component
为了实现行为,重写了 Object
中的属性以及其他方法,我们这里简单的看一下重写后的属性方法
行为的绑定方式
静态的绑定
覆盖behaviors()
例如:
配置方式
这个通过配置方式创建对象( Yii::createObject()
)时,由于不存在的成员变量时会调用 Component
的 __set()
方法,方法中会进行注册
例如:
动态的绑定
调用组件(Compoent)的 attachBehavior()
方法yii\base\Compoent::attachBehaviors()
获取绑定的行为
|
|
解除行为
解除单个
例如:$Component->detachBehavior('myBehavior2');
解除所有
例如:$Component->detachBehaviors();
行为类Behavior
行为类就比较简单了,实现的两个方法就是对事件的注册和解绑
|
|