- 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 事件。