private function _fetchListener(EventIF $ev) { foreach ($this->_store as $k => $list) { if ($ev->match($k)) { foreach ($list as $handler) { (yield $handler); } } } }
public function dispatch(EventIF $event) { if (!$event->hasSubject()) { $event->setSubject($this->_subject); } foreach ($this->_observer_store as $observer) { // 伝搬チェック if ($event->isStopPropagation()) { break; } $observer->notify($event); } if (!$event->match('event.dispatched')) { $this->dispatch(Event::create('event.dispatched', ['event' => $event])); } return $event; }