当前位置: 首页 > 文档资料 > Grav 入门教程 >

生命周期(Lifecycle)

优质
小牛编辑
130浏览
2023-12-01

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

Grav生命周期

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

  • PHP Version

  • Loader class is initialized

  • Obtain Grav Instance

  • Call Grav Process

PHP版本

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

Loader类已初始化

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

获取Grav实例

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

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

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

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

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

调用Grav Process

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

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

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

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

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

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

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

    • 处理可用的语言模板。

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

    • 装载链和树枝配置已加载。

    • 触发onTwigInitialized事件。

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

    • 它设置标准树枝变量。

  • 接下来它初始化页面。

    • 它调用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触发事件onPageNotFound

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

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

    • 调用render()方法。

    • 以HTML格式返回文件格式

  • 它会触发onOutputGenerated事件。

  • 设置HTTP标头。

  • 显示输出

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

  • onOutputRendered事件将会触发。

  • 关闭与客户端的连接。

  • 最后,它会触发onShutDown事件。

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

  • onPageContentRaw事件将起火。

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

  • 它会触发onPageContentProcessed事件。