Grav-生命周期
在本章中,我们将了解Grav的生命周期。 Grav Lifecycle确定Grav如何处理以通过插件扩展Grav。下图显示了Grav生命周期过程的流程。
Grav生命周期中的以下四个步骤-
-
PHP版本
-
加载程序类已初始化
-
获取重力实例
-
呼叫重力过程
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事件。