Symfony - 架构

Symfony 基本上是高质量组件和包的集合。组件是提供单一核心功能的类的集合。例如,Cache 组件 提供缓存功能,可将其添加到任何应用程序中。组件是 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) 架构。Model 表示我们业务实体的结构。View 根据情况以最佳方式向用户显示模型。Controller 处理来自用户的所有请求,通过与 Model 交互完成实际工作,并最终向 View 提供必要的数据以将其显示给用户。

Symfony Web 框架提供了企业级应用程序所需的所有高级功能。以下是 Symfony Web 应用程序的简单工作流程。

Web 应用程序

工作流程包括以下步骤。

步骤 1 − 用户通过浏览器向应用程序发送请求,例如 http://www.symfonyexample.com/index。

步骤 2 − 浏览器将向 Web 服务器发送请求,例如 Apache Web 服务器。

步骤 3 − Web 服务器将请求转发到底层 PHP,然后 PHP 将其发送到 Symfony Web 框架。

步骤 4 − HttpKernel 是 Symfony Web 框架的核心组件。 HttpKernel 使用路由组件解析给定请求的控制器,并将请求转发到目标控制器。

步骤 5 − 所有业务逻辑都发生在目标控制器中。

步骤 6 − 控制器将与模型交互,模型又通过 Doctrine ORM 与数据源交互。

步骤 7 − 一旦控制器完成该过程,它将自己或通过视图引擎生成响应,并将其发送回 Web 服务器。

步骤 8 − 最后,Web 服务器将响应发送到请求的浏览器。