Grav - 生命周期

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

Grav Lifecycle

以下四个步骤来自Grav生命周期 :

  • PHP版本

  • Loader类已初始化

  • 获取Grav实例

  • 致电Grav流程

PHP版本

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

初始化Loader类

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

获取Grav实例

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

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

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

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

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

调用Grav Process

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

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

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

  • 接下来它初始化主题并触发 onThemeInitialized onTask [TASK] 事件.

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

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

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

    • 处理可用的语言模板测试.

    • 接下来它会触发 onTwigTemplatePaths 事件.

    • 加载了加载链和树枝配置.

    • 触发 onTwigInitialized 事件.

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

    • 它设置标准树枝变量.

  • 接下来它初始化页面.

    • 要加载文件详细信息, init()方法是叫做.

    • 设置filePath,modified和id.

    • 调用header()方法来初始化标头变量.

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

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

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

    • 它调用 buildPages()方法.

    • 如果缓存很好,然后它从缓存加载页面.如果缓存不好,则调用 recurse()方法.

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

    • 如果找到文件为 .md ,则以下动作执行 : 去;

    • 它稍后会触发 onPageProcessed 事件.

    • 它会触发 onFolderProcessed event.

    • 调用 buildRoutes()方法.

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

    • route 表用于快速查找.

  • 事件 onPagesInitialized onPageInitialized 被解雇.

  • 调试器CSS/JS被添加到资产中.

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

    • 事件 onTwigSiteVariables 被触发.

    • 获取页面的输出.

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

    • 所有Twig变量都设置为twig object.

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

    • 调用

      render()方法.

    • 以HTML格式返回文件格式

  • 它会触发 onOutputGenerated 事件.

  • 设置HTTP标头.

  • 显示输出

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

  • 事件 onOutputRendered 会起火.

  • 关闭与客户端的连接.

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

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

  • 事件 onPageContentRaw 会起火.

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

  • 它会触发 onPageContentProcessed 事件.