Home >php教程 >php手册 >PHP的Yii框架中移除组件所绑定的行为的方法

PHP的Yii框架中移除组件所绑定的行为的方法

WBOY
WBOYOriginal
2016-06-06 19:32:52857browse

要移除行为,可以调用 yii\base\Component::detachBehavior() 方法用行为相关联的名字实现: $component-detachBehavior('myBehavior1'); 也可以移除全部行为: $component-detachBehaviors(); 这上面两种方法,都会调用到 yii\base\Behavior::detach() ,其

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

$component->detachBehavior('myBehavior1');

也可以移除全部行为:

$component->detachBehaviors();

这上面两种方法,都会调用到 yii\base\Behavior::detach() ,其代码如下:

public function detach()
{
  // 这得是个名花有主的行为才有解除一说
  if ($this->owner) {

    // 遍历行为定义的事件,一一解除
    foreach ($this->events() as $event => $handler) {
      $this->owner->off($event, is_string($handler) ? [$this,
        $handler] : $handler);
    }
    $this->owner = null;
  }
}

与 yii\base\Behavior::attach() 相反,解除的过程就是干两件事: 一是将 $owner 设置为 null ,表示这个行为没有依附到任何类上。 二是通过Component的 off() 将绑定到类上的事件hanlder解除下来。一句话,善始善终。

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn