public function off($name, $handler = null)
{
$this->ensureBehaviors();
if (empty($this->_events[$name])) {
return false;
}
if ($handler === null) {
unset($this->_events[$name]);
return true;
} else {
$removed = false;
foreach ($this->_events[$name] as $i => $event) {
if ($event[0] === $handler) {
unset($this->_events[$name][$i]);
$removed = true;
}
}
if ($removed) {
$this->_events[$name] = array_values($this->_events[$name]);
}
return $removed;
}
}
public function off($name, $handler = null) { if ($handler === null) { unset($this->_handlers[$name]); return parent::off($name, $handler); } else { $removed = false; foreach ($this->_handlers[$name] as $i => $value) { if ($value === $handler) { $removed = parent::off($name, [$this, $i]) || $removed; unset($this->_handlers[$name][$i]); } } return $removed; } }