Symfony - 架構



Symfony 基本上是一組高質量的元件和捆綁包。元件是提供單個核心功能的類的集合。例如,快取元件提供快取功能,可以新增到任何應用程式中。元件是 Symfony 應用程式的構建塊。Symfony 擁有 30 多個高質量元件,這些元件被許多 PHP 框架(如 Laravel、Silex 等)使用。

捆綁包類似於外掛,但易於建立和使用。實際上,Symfony 應用程式本身就是一個由其他捆綁包組成的捆綁包。單個捆綁包可以使用任意數量的 Symfony 元件以及第三方元件來提供功能,例如 Web 框架、資料庫訪問等。Symfony 核心 Web 框架是一個名為 FrameworkBundle 的捆綁包,還有一個名為 FrameworkExtraBundle 的捆綁包,它提供了更復雜的選擇來編寫 Web 應用程式。

元件、捆綁包和 Symfony 應用程式之間的關係在以下圖表中指定。

Architecture

Web 框架

Symfony 主要旨在輕鬆編寫高質量的 Web 應用程式。它提供了各種選項來編寫不同型別的 Web 應用程式,從簡單的網站到高階的基於 REST 的 Web 服務。Symfony 將 Web 框架作為單獨的捆綁包提供。Symfony Web 框架中常用的捆綁包如下:

  • FrameworkBundle
  • FrameworkExtraBundle
  • DoctrineBundle

Symfony Web 框架基於模型-檢視-控制器 (MVC) 架構。模型表示我們業務實體的結構。檢視根據情況以最佳方式向用戶顯示模型。控制器處理來自使用者的全部請求,透過與模型互動完成實際工作,最後向檢視提供必要的資料以將其顯示給使用者。

Symfony Web 框架提供了企業級應用程式所需的所有高階功能。以下是 Symfony Web 應用程式的簡單工作流程。

Web Application

工作流程包括以下步驟。

步驟 1 - 使用者透過瀏覽器嚮應用程式傳送請求,例如 http://www.symfonyexample.com/index。

步驟 2 - 瀏覽器將向 Web 伺服器(例如 Apache Web 伺服器)傳送請求。

步驟 3 - Web 伺服器將請求轉發到底層的 PHP,後者又將其傳送到 Symfony Web 框架。

步驟 4 - HttpKernel 是 Symfony Web 框架的核心元件。HttpKernel 使用路由元件解析給定請求的控制器,並將請求轉發到目標控制器。

步驟 5 - 所有業務邏輯都在目標控制器中進行。

步驟 6 - 控制器將與模型互動,模型又透過 Doctrine ORM 與資料來源互動。

步驟 7 - 一旦控制器完成處理,它會自己生成響應或透過檢視引擎生成響應,並將其傳送回 Web 伺服器。

步驟 8 - 最後,Web 伺服器將響應傳送到請求的瀏覽器。

廣告