# 应用结构
我们之前已经讲过,SF是一个非常严格的MVC框架。所以,我们的应用也严格遵循MVC分离的原则。
但是,由于本应用已经开发到了6.0版本,笔者对应用结构也有了全新的布局,所以在该版本的应用中,M模块其实已经不再存在,而改用RESTful API调用的方式。因此本应用的结构也相对比较扁平。
简单来说,我们创建了一系列的`Controller`,其中的`action`与`routing`关联,负责接收来自主入口文件(`app.php`)的调派。
在某个具体的`action`中,一般的流程是:
* 获取传入的参数;
* 构建要调用的API URI;
* 获得返回数据并解析[1](https://taylorr.gitbooks.io/building-a-web-site-with-symfony/content/05.03%20structure.html#fn_1);
* 将构造好的数据传递给一个模板并显示;
根据应用要提供的功能,我们可以创建相应的`controller`。我们会在稍后的章节中说明各个`controller`的创建。
这个应用有前台,也有后台。
前台是各个公共页面,如首页、书籍列表、书籍详情、书评列表、其它页面等。下图是首页的效果[2](https://taylorr.gitbooks.io/building-a-web-site-with-symfony/content/05.03%20structure.html#fn_2)。
![](https://box.kancloud.cn/370e7cd5c5b7b2451b6282d82a32c429_1003x2044.png)
后台需要登陆,显示相关的统计数据,如下图所示。
![](https://box.kancloud.cn/f87338d58d4f479a7844a0aa208bf6ce_1003x1781.png)
> 1. RESTful API接口返回的都是JSON格式的数据,所以必须将其转换到一个对象或者数组以便PHP进一步使用。[ ↩](https://taylorr.gitbooks.io/building-a-web-site-with-symfony/content/05.03%20structure.html#reffn_1 "Jump back to footnote [1] in the text.")
> 2. 这是我运行中的站点的首页,比本教程要创建的首页更复杂。[ ↩](https://taylorr.gitbooks.io/building-a-web-site-with-symfony/content/05.03%20structure.html#reffn_2 "Jump back to footnote [2] in the text.")
- 引言
- 1 LAMP
- 1.1 安装虚拟机
- 1.2 安装Vagrant
- 1.3 安装Ubuntu
- 1.4 安装Apache 2
- 1.5 安装PHP
- 1.6 安装MySQL服务器
- 1.7 最后的微调
- 1.8 设置一个虚拟主机
- 1.9 一个趁手的IDE
- 2 Symfony 3和重要构件
- 2.1 Symfony 3
- 2.2 Doctrine
- 2.3 Twig
- 2.4 Composer
- 3 Symfony重要概念
- 3.1 MVC
- 3.2 Bundle/包
- 3.3 Route/路由
- 3.4 Controller/控制器
- 3.5 Entity/实体
- 3.6 Repository/仓库
- 3.7 Template/模板
- 3.8 Test/测试
- 4 藏书管理程序的结构
- 5 创建应用
- 5.1 建立版本管理
- 5.2 建立数据库
- 5.3 应用结构
- 5.4 建立数据库实体
- 5.5 样本数据
- 5.6 路由
- 5.7 模板
- 5.8 开始编写首页
- 5.9 书籍详情页面
- 5.10 书籍列表页面
- 5.11 书籍搜索
- 6 用户和后台
- 7 结语