共计 1000 个字符,预计需要花费 3 分钟才能阅读完成。
Application 初始化实现之后只做了一个动作:run.
本章就从 run 办法开始, 逐渐深刻后续的调用.
先看 run 的代码:
public function run(): 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');
Console::colored('Code Trace:', 'comment');
echo $e->getTraceAsString(), "n";}
}
内容简洁, 所有逻辑都交给了以后对象的 processor 去解决.
processor 的代码:
public function handle(): bool
{
// 到目前为止程序中还未设置生效的处理器, 所以此处为空数组
$disabled = $this->application->getDisabledProcessors();
// 遍历 $this->processors 调用每一个处理器的 handle 办法
// $this->processors 就是上一章中初始化设置的那 6 个处理器
// 他们会被程序执行, 执行程序是:
// Swoft\Processor\EnvProcessor
// Swoft\Processor\ConfigProcessor
// Swoft\Processor\AnnotationProcessor
// Swoft\Processor\BeanProcessor
// Swoft\Processor\EventProcessor
// Swoft\Processor\ConsoleProcessor
foreach ($this->processors as $processor) {$class = get_class($processor);
// If is disabled, skip handle.
if (isset($disabled[$class])) {continue;}
$processor->handle();}
return true;
}
从下一章开始, 将依照调用程序, 每一章解说一个处理器.
正文完