Symfony Architecture


Symfony基本上是高质量组件和捆绑包的集合。组件是提供单个核心功能的类的集合。例如, 缓存组件 提供了缓存功能,可以将其添加到任何应用程序中。组件是Symfony应用程序的构建块。Symfony有30多个高质量的组件,用于许多PHP框架,如Laravel,Silex等。

套件类似于插件,但易于创建并且易于使用。实际上,Symfony应用程序本身就是一个由其他软件包组成的软件包。一个bundle可以使用任意数量的Symfony组件以及第三方组件来提供诸如Webframework,数据库访问等功能。Symfony核心web- framework是一个名为FrameworkBundle的包,并且有一个名为FrameworkExtraBundle的包,它提供了更复杂编写Web应用程序的选项。

组件,Bundle和Symfony应用程序之间的关系在下图中指定。

建筑

Web框架

Symfony主要设计用于相对容易地编写高质量的Web应用程序。它提供了各种选项来编写不同类型的Web应用程序,从简单的Web站点到基于高级REST的Web服务。Symfony将Web框架作为单独的捆绑包提供。Symfony Web框架中使用的常用包如下所示 -

  • FrameworkBundle
  • FrameworkExtraBundle
  • DoctrineBundle

Symfony Web框架基于模型 - 视图 - 控制器(MVC)架构。 模型 代表了我们的商业实体的结构。 视图 根据具体情况以最佳方式向用户显示模型。 控制器 处理来自用户的所有请求,通过与模型交互来完成实际工作,并最终向View提供必要的数据以向用户显示。

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

Web应用程序

该工作流程由以下步骤组成。

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

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

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

第4步 - HttpKernel是Symfony Web框架的核心组件。 HttpKernel使用Routing组件解析给定请求的控制器并将请求转发给目标控制器。

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

第6步 - 控制器将与Model交互,Model又通过Doctrine ORM与数据源进行交互。

第7步 - 控制器完成该过程后,它会自己或通过View Engine生成响应,并将其发送回Web服务器。

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