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;
}
从下一章开始,将按照调用顺序,每一章讲解一个处理器.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。