通过Bean处理器后,咱们业务中要用到的组件大多都被放在了容器内.咱们要用到的时候能够从容器内获取这个bean对象,这让咱们的工作轻松了不少.

先看事件处理器的入口办法:

public function handle(): bool{     if (!$this->application->beforeEvent()) {         CLog::warning('Stop event processor by beforeEvent return false');         return false;      }     // 从容器内获取曾经加载的事件管理器     /** @var EventManager $eventManager */     $eventManager = bean('eventManager');     // 将ListenerRegister保留的事件监听和事件订阅实例保留到事件管理器上     // count1是监听实例的数量,count2是订阅实例的数量     [$count1, $count2] = ListenerRegister::register($eventManager);     // 打印执行后果到控制台     CLog::info('Event manager initialized(%d listener, %d subscriber)', $count1, $count2);     // Trigger a app init event     // 触发APP初始化实现事件     Swoft::trigger(SwoftEvent::APP_INIT_COMPLETE);     // 完结事件处理器工作     return $this->application->afterEvent();}

总结:

因为事件管理器已被加载到bean容器中,所以以后处理器工作很少,只是将收集到的监听者和订阅者对象移交给事件管理器对立治理.另外,在事件处理器调用前要想增加事件监听,要通过Swoft\Event\ListenerRegister的addListener或addSubscriber办法来增加.事件管理器,前面可能会出独自章节进行剖析.