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