yii2 源码分析Behavior类分析
Posted 刘宛秋
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了yii2 源码分析Behavior类分析 相关的知识,希望对你有一定的参考价值。
Behavior类是所有事件类的基类,它继承自object类
Behavior类的前面注释描述大概意思:
* Behavior类是所有事件类的基类 * * 一个行为可以用来增强现有组件的功能,而不需要修改它的代码。 * 用来增强现有组件的功能而不修改它的代码。它可以添加自己的方法和属性组件 * 使他们可以直接通过组件访问。还可以响应组件触发的事件,拦截正常的代码执行。
class Behavior extends Object { /** * 要附加行为对象的组件 */ public $owner; /** * 声明[[owner]]的事件处理程序. * 子类可以重写此方法 php回调应连接 [[owner]]组件。 * 当行为被连接到owner时回调将附在[[owner]]的事件中,当行为从组件中分离时,它们将被分离 * * 回调函数可以是以下任意格式: * * - 在这个行为类中的方法: `‘handleClick‘`, 相当于 to `[$this, ‘handleClick‘]` * - 类的普通方法: `[$object, ‘handleClick‘]` * - 类的静态方法: `[‘Page‘, ‘handleClick‘]` * - 匿名函数: `function ($event) { ... }` * * 例如: * ```php * [ * Model::EVENT_BEFORE_VALIDATE => ‘myBeforeValidate‘, * Model::EVENT_AFTER_VALIDATE => ‘myAfterValidate‘, * ] * ``` * @return 数组事件名(数组键)和相应的事件处理方法(数组值). */ public function events() { return []; } /** * 绑定行为到组件 * 默认设置[[owner]]属性并将事件处理程序绑定到组件 * 如果重写方法,确保调用父类去实现 * @param 行为绑定到$owner组件 */ public function attach($owner) { $this->owner = $owner; foreach ($this->events() as $event => $handler) { //事件绑定 $owner->on($event, is_string($handler) ? [$this, $handler] : $handler); } } /** * 解除绑定的行为. * 默认取消 owner的属性 * 将events中的事件程序解除绑定 * 如果重写方法,确保调用父类去实现 */ public function detach() { if ($this->owner) { foreach ($this->events() as $event => $handler) { //将绑定到类上的事件解除 $this->owner->off($event, is_string($handler) ? [$this, $handler] : $handler); } //将 $owner 设置为 null ,解除绑定 $this->owner = null; } } }
以上是关于yii2 源码分析Behavior类分析 的主要内容,如果未能解决你的问题,请参考以下文章