Grav - 生命週期



在本章中,我們將瞭解 Grav 的生命週期。Grav 生命週期決定了 Grav 如何處理流程,以便透過外掛擴充套件 Grav。下圖顯示了 Grav 生命週期流程。

Grav Lifecycle

Grav 生命週期中的以下四個步驟:

  • PHP 版本

  • 初始化載入器類

  • 獲取 Grav 例項

  • 呼叫 Grav 程序

PHP 版本

它檢查 PHP 的版本,以確保我們執行的 PHP 版本高於 5.4.0。

初始化載入器類

在第二步中,類載入器被初始化。

獲取 Grav 例項

  • 如果不存在例項,則它呼叫 load() 方法並新增 Grav。

  • 它初始化偵錯程式值並將其新增到偵錯程式。

  • 它註冊日誌和錯誤處理程式。

  • 它新增 uri、任務、事件、快取、會話、外掛、主題、twig、分類法、語言、頁面、資源和基本 URL。

  • 它註冊流和配置處理程式。

呼叫 Grav 程序

  • 它初始化配置、Uri 物件、錯誤處理程式、偵錯程式和會話。

  • 初始化後,它開始緩衝輸出。

  • 它初始化時區和外掛,並觸發 onPluginsInitialized 事件。

  • 接下來,它初始化主題並觸發 onThemeInitializedonTask[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 表。

  • 觸發 onPagesInitializedonPageInitialized 事件。

  • 偵錯程式 CSS/JS 新增到資源中。

  • 使用 Twig 的 processSite() 方法,我們得到輸出。

    • 觸發 onTwigSiteVariables 事件。

    • 獲取頁面的輸出。

    • 當頁面未找到或不可路由時,將觸發 onPageNotFound 事件。

    • 所有 Twig 變數都設定在 twig 物件上。

    • 根據檔案/標題/擴充套件資訊設定模板名稱。

    • 呼叫 render() 方法。

    • 返回 HTML 格式的檔案。

  • 它觸發 onOutputGenerated 事件。

  • 設定 HTTP 頭。

  • 顯示輸出

  • 輸出緩衝區被重新整理到頁面。

  • 將觸發 onOutputRendered 事件。

  • 關閉與客戶端的連線。

  • 最後,它觸發 onShutDown 事件。

當在頁面上呼叫 content() 方法時,將發生以下生命週期。

  • 將觸發 onPageContentRaw 事件。

  • 根據 Markdown 和 Twig 設定,它處理頁面。

  • 它觸發 onPageContentProcessed 事件。

廣告

© . All rights reserved.