Grav - 生命周期



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

Grav Lifecycle

Grav 生命周期中的以下四个步骤:

  • PHP 版本

  • 初始化加载器类

  • 获取 Grav 实例

  • 调用 Grav 进程

PHP 版本

它检查 PHP 的版本,以确保我们运行的 PHP 版本高于 5.4.0。

初始化加载器类

在第二步中,类加载器被初始化。

获取 Grav 实例

  • 如果不存在实例,则它调用 load() 方法并添加 Grav。

  • 它初始化调试器值并将其添加到调试器。

  • 它注册日志和错误处理程序。

  • 它添加 uri、任务、事件、缓存、会话、插件、主题、twig、分类法、语言、页面、资源和基本 URL。

  • 它注册流和配置处理程序。

调用 Grav 进程

  • 它初始化配置、Uri 对象、错误处理程序、调试器和会话。

  • 初始化后,它开始缓冲输出。

  • 它初始化时区和插件,并触发 onPluginsInitialized 事件。

  • 接下来,它初始化主题并触发 onThemeInitializedonTask[TASK] 事件。

  • 它初始化资源并触发 onAssetsInitialized 事件。

  • 它使用以下操作初始化 twig:

    • 根据配置,它设置 twig 模板路径。

    • 处理可用的语言模板。

    • 接下来,它触发 onTwigTemplatePaths 事件。

    • 加载器链和 twig 配置被加载。

    • 触发 onTwigInitialized 事件。

    • 它加载 twig 扩展并触发 onTwigExtensions 事件。

    • 它设置标准的 twig 变量。

  • 接下来,它初始化页面。

    • 它调用 buildPages() 方法。

    • 如果缓存良好,则它从缓存加载页面。如果缓存不好,则调用 recurse() 方法。

    • onBuildPagesInitialized 事件在 recurse() 方法中触发。

    • 如果找到一个名为 .md 的文件,则执行以下操作:

      • 要加载文件详细信息,会调用 init() 方法。

      • 它设置 filePath、modified 和 id。

      • 调用 header() 方法初始化标题变量。

      • 调用 slug() 方法设置 URL slug。

      • 调用 visible() 方法设置可见状态。

      • 根据以 _(下划线) 开头的文件夹,设置 modularTwig()

    • 稍后它触发 onPageProcessed 事件。

    • 如果找到文件夹,则递归 recurse() 子文件夹。

    • 它触发 onFolderProcessed 事件。

    • 调用 buildRoutes() 方法。

    • 为所有页面初始化 taxonomy

    • 为快速查找构建 route 表。

  • 触发 onPagesInitializedonPageInitialized 事件。

  • 调试器 CSS/JS 添加到资源中。

  • 使用 Twig 的 processSite() 方法,我们得到输出。

    • 触发 onTwigSiteVariables 事件。

    • 获取页面的输出。

    • 当页面未找到或不可路由时,将触发 onPageNotFound 事件。

    • 所有 Twig 变量都设置在 twig 对象上。

    • 根据文件/标题/扩展信息设置模板名称。

    • 调用 render() 方法。

    • 返回 HTML 格式的文件。

  • 它触发 onOutputGenerated 事件。

  • 设置 HTTP 头。

  • 显示输出

  • 输出缓冲区被刷新到页面。

  • 将触发 onOutputRendered 事件。

  • 关闭与客户端的连接。

  • 最后,它触发 onShutDown 事件。

当在页面上调用 content() 方法时,将发生以下生命周期。

  • 将触发 onPageContentRaw 事件。

  • 根据 Markdown 和 Twig 设置,它处理页面。

  • 它触发 onPageContentProcessed 事件。

广告