📜  Grav-生命周期

📅  最后修改于: 2020-10-25 05:32:27             🧑  作者: Mango


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

Grav生命周期

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

  • PHP版本

  • 加载程序类已初始化

  • 获取重力实例

  • 呼叫重力过程

PHP版本

它检查PHP的版本,以确保我们正在运行5.4.0以上的PHP版本。

加载程序类已初始化

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

获取重力实例

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

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

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

  • 它添加了uri,任务,事件,缓存,会话,插件,主题,小枝,分类法,语言,页面,资产和基本url。

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

呼叫重力过程

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

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

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

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

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

  • 它通过以下操作初始化树枝-

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

    • 处理可用的语言模板。

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

    • 加载程序链和细枝配置已加载。

    • 触发onTwigInitialized事件。

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

    • 它设置标准的树枝变量。

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

    • 它调用buildPages()方法。

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

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

    • 如果发现文件为.md ,则执行以下操作-

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

      • 它设置文件路径,已修改和ID。

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

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

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

      • 基于以_(下划线)开头的文件夹,设置了modulatedTwig()

    • 稍后将触发onPageProcessed事件。

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

    • 它触发onFolderProcessed事件。

    • 调用buildRoutes()方法。

    • 对于所有页面,分类均已初始化

    • 路由表是为快速查找而构建的。

  • 事件onPagesInitializedonPageInitialized被触发。

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

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

    • 已触发onTwigSiteVariables事件。

    • 获取页面的输出。

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

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

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

    • render()方法被调用。

    • 返回HTML中的文件格式

  • 它触发onOutputGenerated事件。

  • 设置HTTP标头。

  • 显示输出

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

  • onOutputRendered事件将触发。

  • 关闭与客户端的连接。

  • 最后,它触发onShutDown事件。

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

  • onPageContentRaw事件将触发。

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

  • 触发onPageContentProcessed事件。