
- Symfony 教程
- Symfony - 主页
- Symfony - 简介
- Symfony - 安装
- Symfony - 架构
- Symfony - 组件
- Symfony - 服务容器
- Symfony - 事件和事件监听器
- Symfony - 表达
- Symfony - 捆绑包
- 创建一个简单的 Web 应用程序
- Symfony - 控制器
- Symfony - 路由
- Symfony - 视图引擎
- Symfony - Doctrine ORM
- Symfony - 表单
- Symfony - 验证
- Symfony - 文件上传
- Symfony - Ajax 控制
- Cookie 和会话管理
- Symfony - 国际化
- Symfony - 日志记录
- Symfony - 电子邮件管理
- Symfony - 单元测试
- Symfony - 高级概念
- Symfony - REST 版
- Symfony - CMF 版
- 完整的工作示例
- Symfony 有用资源
- Symfony - 快速指南
- Symfony - 有用的资源
- Symfony - 讨论
Symfony - 架构
Symfony 基本上是高质量组件和捆绑包的集合。组件是提供单一核心功能的类的集合。例如,Cache组件提供缓存功能,可以将其添加到任何应用程序中。组件是 Symfony 应用程序的构建块。Symfony 拥有 30 多个高质量组件,这些组件被用于 Laravel、Silex 等许多 PHP 框架中。
捆绑包与插件类似,但易于创建且易于使用。实际上,Symfony 应用程序本身就是一个由其他包组成的包。单个包可以使用任意数量的 Symfony 组件以及第三方组件来提供 Webframework、数据库访问等功能。Symfony 核心 Web 框架是一个名为 FrameworkBundle 的包,还有一个名为 FrameworkExtraBundle 的包,它提供了更复杂的功能编写 Web 应用程序的选项。
下图指定了组件、捆绑包和 Symfony 应用程序之间的关系。

网络框架
Symfony 主要设计用于相对轻松地编写高质量的 Web 应用程序。它提供了各种选项来编写不同类型的 Web 应用程序,从简单的网站到基于 REST 的高级 Web 服务。Symfony 以单独的捆绑包形式提供 Web 框架。Symfony Web 框架中使用的常见捆绑包如下 -
- 框架包
- 框架额外捆绑包
- 教义束
Symfony Web 框架基于模型-视图-控制器 (MVC) 架构。模型代表了我们业务实体的结构。视图根据情况以最佳方式向用户显示模型。控制器处理来自用户的所有请求,通过与模型交互来完成实际工作,最后为视图提供必要的数据以将其显示给用户。
Symfony Web 框架提供了企业级应用程序所需的所有高级功能。以下是 Symfony 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 - 一旦控制器完成该过程,它就会自行生成响应或通过 View Engine 生成响应,并将其发送回 Web 服务器。
步骤 8 - 最后,响应将由网络服务器发送到请求的浏览器。