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

从bin-swoft入手,阅读Swoft框架源码(二)--Application的run方法

时间:2023-03-29 17:46:42 PHP

Application初始化后,只有一个动作:运行。本章从run方法开始,逐步深入到后续的调用中。先看run的代码:publicfunctionrun():void{try{if(!$this->beforeRun()){return;}$this->processor->handle();}catch(Throwable$e){//如果代码执行过程中发生异常,会在这里捕获并打印到控制台Console::colored(sprintf('%s(code:%d)%s',get_class($e),$e->getCode(),$e->getMessage()),'red');控制台::彩色('代码跟踪:','评论');echo$e->getTraceAsString(),"n";}}内容简洁,所有逻辑都交给当前对象的处理器处理。处理器代码:publicfunctionhandle():bool{//到目前为止,程序中还没有设置无效的处理器,所以这里是一个空数组$disabled=$this->application->getDisabledProcessors();//遍历$this->processors调用各个处理器的句柄方法//$this->processors就是上一章初始化的6个处理器//它们会依次执行,执行顺序为://Swoft\Processor\EnvProcessor//Swoft\Processor\ConfigProcessor//Swoft\Processor\AnnotationProcessor//Swoft\Processor\BeanProcessor//Swoft\Processor\EventProcessor//Swoft\Processor\ConsoleProcessorforeach($this->processorsas$processor){$class=get_class($processor);}//如果禁用,则跳过句柄。如果(isset($disabled[$class])){继续;}$processor->handle();}returntrue;}从下一章开始,每章按照调用顺序讲解一个处理器。