首页 > 代码库 > yii2 源码分析Behavior类分析 (四)
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类分析 (四)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。