生命周期(Lifecycle)
在本章中,我们将了解Grav的生命周期。 Grav Lifecycle确定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事件。
接下来,它初始化主题并触发onThemeInitialized和onTask[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表是为快速查找而构建的。
onPagesInitialized和onPageInitialized事件被触发。
调试器CSS/JS被添加到资产中。
使用Twig的processSite()方法,我们得到输出。
onTwigSiteVariables事件被触发。
获取页面的输出。
如果找不到页面或无法路由, onPageNotFound触发事件onPageNotFound 。
所有Twig变量都在twig对象上设置。
根据文件/标题/扩展名信息设置模板名称。
调用render()方法。
以HTML格式返回文件格式
它会触发onOutputGenerated事件。
设置HTTP标头。
显示输出
输出缓冲区刷新到页面。
onOutputRendered事件将会触发。
关闭与客户端的连接。
最后,它会触发onShutDown事件。
在页面上调用content()方法时,将发生以下生命周期。
onPageContentRaw事件将起火。
根据Markdown和Twig设置,它处理页面。
它会触发onPageContentProcessed事件。