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 服务器将响应发送到请求的浏览器。

广告