在本章中,我们将了解Grav的生命周期. Grav Lifecycle确定Grav如何处理以通过插件扩展Grav.下图显示了Grav生命周期流程的流程.
以下四个步骤来自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 事件.