동작을 제거하려면 동작과 관련된 이름을 사용하여 yiibaseComponent::detachBehavior() 메서드를 호출하면 됩니다.
$component->detachBehavior('myBehavior1');
모든 동작을 제거할 수도 있습니다.
$component->detachBehaviors();
위의 두 메서드는 yiibaseBehavior::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; } }
yiibaseBehavior::attach()와 달리 차단 해제 프로세스는 두 가지 작업을 수행하는 것입니다. 먼저 $owner를 null로 설정하여 이 동작이 어떤 클래스에도 연결되지 않음을 나타냅니다. 두 번째는 Component의 off()를 통해 클래스에 바인딩된 이벤트 핸들러를 해제하는 것입니다. 한마디로 시작이 좋고 끝이 좋다.