- Grav 插件
- Grav - 插件基础
- Grav - 插件教程
- Grav - 事件钩子
- Grav 管理面板
- Grav - 管理员简介
- Grav - 管理员仪表盘
- Grav - 配置系统
- Grav - 站点配置
- Grav - 管理面板页面
- Grav - 页面编辑器选项
- Grav - 页面编辑器高级
- Grav 高级
- Grav - 蓝图
- Grav - 性能和缓存
- Grav - 调试和日志记录
- Grav - CLI
- Grav - GPM
- Grav - 开发
- Grav - 生命周期
- Grav - YAML 语法
- Grav - 表单
- Grav 托管
- Grav - 网络托管
- Grav 故障排除
- Grav - 服务器错误
- Grav - 权限
- Grav 有用资源
- Grav - 面试问题
- Grav - 快速指南
- Grav - 有用资源
- Grav - 讨论
Grav - 生命周期
在本章中,我们将了解 Grav 的生命周期。Grav 生命周期决定了 Grav 如何处理流程,以便通过插件扩展 Grav。下图显示了 Grav 生命周期流程。
Grav 生命周期中的以下四个步骤:
PHP 版本
初始化加载器类
获取 Grav 实例
调用 Grav 进程
PHP 版本
它检查 PHP 的版本,以确保我们运行的 PHP 版本高于 5.4.0。
初始化加载器类
在第二步中,类加载器被初始化。
获取 Grav 实例
如果不存在实例,则它调用 load() 方法并添加 Grav。
它初始化调试器值并将其添加到调试器。
它注册日志和错误处理程序。
它添加 uri、任务、事件、缓存、会话、插件、主题、twig、分类法、语言、页面、资源和基本 URL。
它注册流和配置处理程序。
调用 Grav 进程
它初始化配置、Uri 对象、错误处理程序、调试器和会话。
初始化后,它开始缓冲输出。
它初始化时区和插件,并触发 onPluginsInitialized 事件。
接下来,它初始化主题并触发 onThemeInitialized 和 onTask[TASK] 事件。
它初始化资源并触发 onAssetsInitialized 事件。
它使用以下操作初始化 twig:
根据配置,它设置 twig 模板路径。
处理可用的语言模板。
接下来,它触发 onTwigTemplatePaths 事件。
加载器链和 twig 配置被加载。
触发 onTwigInitialized 事件。
它加载 twig 扩展并触发 onTwigExtensions 事件。
它设置标准的 twig 变量。
接下来,它初始化页面。
它调用 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 事件。
所有 Twig 变量都设置在 twig 对象上。
根据文件/标题/扩展信息设置模板名称。
调用 render() 方法。
返回 HTML 格式的文件。
它触发 onOutputGenerated 事件。
设置 HTTP 头。
显示输出
输出缓冲区被刷新到页面。
将触发 onOutputRendered 事件。
关闭与客户端的连接。
最后,它触发 onShutDown 事件。
当在页面上调用 content() 方法时,将发生以下生命周期。
将触发 onPageContentRaw 事件。
根据 Markdown 和 Twig 设置,它处理页面。
它触发 onPageContentProcessed 事件。