当前位置: 首页 > 后端技术 > PHP

从bin-swoft入手,阅读Swoft框架源码(七)--EventProcessor事件处理器

时间:2023-03-30 03:28:17 PHP

Bean处理器之后,我们业务中需要用到的大部分组件都放在了容器中。我们可以在需要的时候从容器中获取bean对象,这样我们的工作就会轻松很多。先看事件处理器的入口方法:publicfunctionhandle():bool{if(!$this->application->beforeEvent()){CLog::warning('StopeventprocessorbybeforeEventreturnfalse');返回假;}//从容器中获取加载的事件管理器/**@varEventManager$eventManager*/$eventManager=bean('eventManager');//将ListenerRegister保存的事件监听器和事件订阅实例保存到事件管理器中//count1为监听实例数,count2为订阅实例数[$count1,$count2]=ListenerRegister::register($eventManager);//打印执行结果到控制台CLog::info('Eventmanagerinitialized(%dlistener,%dsubscriber)',$count1,$count2);//触发appinit事件//触发APP初始化完成事件Swoft::trigger(SwoftEvent::APP_INIT_COMPLETE);//结束事件处理器工作return$this->application->afterEvent();}总结:由于事件管理器已经加载到bean容器中,当前处理器工作很少,将收集到的listener和subscriber对象交出来给事件管理器统一管理。另外,如果想在事件处理器调用前添加事件监听,需要通过Swoft\Event\ListenerRegister的addListener或addSubscriber方法添加添加。EventManager,后面可能会有单独的章节来分析。