Grav - 生命周期
在本章中,我们将了解 Grav 的生命周期。Grav 生命周期决定了 Grav 如何处理以便通过插件扩展 Grav。下图显示了 Grav 生命周期流程。

Grav 生命周期的以下四个步骤 −
PHP 版本
初始化 Loader 类
获取 Grav 实例
调用 Grav 进程
PHP 版本
检查 PHP 的版本,以确保我们运行的是 5.4.0 以上的 PHP 版本。
初始化 Loader 类
在第二步中,类加载器获取初始化。
获取 Grav 实例
如果不存在实例,则调用 load() 方法并添加 Grav。
它初始化调试器值并添加到调试器。
它注册日志和错误处理程序。
它添加 uri、任务、事件、缓存、会话、插件、主题、twig、分类法、语言、页面、资产和基本 url。
它注册流和配置处理程序。
调用 Grav 进程
它初始化配置、Uri 对象、错误处理程序、调试器和会话。
初始化后,它启动缓冲输出。
它初始化时区和插件并触发 onPluginsInitialized 事件。
接下来,它初始化主题并触发 onThemeInitialized 和 onTask[TASK] 事件。
它初始化资产并触发 onAssetsInitialized 事件。
它使用以下操作初始化 twig −
根据配置,它设置 twig 模板路径。
处理可用的语言模板。
接下来,它触发 onTwigTemplatePaths事件。
加载器链和 twig 配置。
触发 onTwigInitialized 事件。
它加载 twig 扩展并触发 onTwigExtensions 事件。
它设置标准 twig 变量。
接下来它初始化页面。
它调用 buildPages() 方法。
如果缓存良好,则从缓存中加载页面。如果缓存不好,则调用 recurse() 方法。
onBuildPagesInitialized 事件在 recurse() 方法中触发。
如果文件为 .md,则执行以下操作 −
要加载文件详细信息,将调用 init() 方法。
它设置文件路径、修改和 ID。
调用 header() 方法来初始化标头变量。
调用 slug() 方法来设置 URL slug。
调用 visible() 方法来设置可见状态。
根据以 _(下划线)开头的文件夹,设置 modularTwig()。
它稍后会触发 onPageProcessed 事件。
recurse() 如果文件夹是找到。
它会触发 onFolderProcessed 事件。
调用 buildRoutes() 方法。
对于所有页面,分类法 都已初始化
构建 route 表以便快速查找。
触发 onPagesInitialized 和 onPageInitialized 事件。
将调试器 CSS/JS 添加到资产中。
使用 Twig 的 processSite() 方法,我们得到输出。
事件onTwigSiteVariables 被触发。
获取页面的输出。
当页面未找到或不可路由时,将触发事件 onPageNotFound。
所有 Twig 变量均在 twig 对象上设置。
根据文件/标头/扩展名信息设置模板名称。
render() 方法被调用。
以 HTML 格式返回文件格式
它触发 onOutputGenerated 事件。
设置 HTTP 标头。
显示输出
输出缓冲区被刷新到页面。
事件 onOutputRendered 将触发。
关闭与客户端的连接。
最后,它触发 onShutDown 事件。
当在页面上调用 content() 方法时,将发生以下生命周期。
事件 onPageContentRaw 将触发。
根据 Markdown 和 Twig 设置,它处理页面。
它触发 onPageContentProcessed 事件。