# Bundle/包
SF对一个应用的结构安排,是基于bundle(包)。这个应用的MVC结构,所有的配套文件都被集中在一个包里。这么做是有好处的。比如,一个应用不再仅仅是一个独立的应用,只要符合一定的规范,这个应用(包)完全可以嵌入到另外一个更大的应用之中。实际上,我们之前看到过的所谓第三方库,都是一个一个独立的bundle,通过composer安装到我们的应用中,成为我们应用中的一部分,并为我们的应用提供功能。
在实际应用中,我们可以将一个包理解为一个目录。一个典型的包可能包括如下的内容:
![](https://box.kancloud.cn/6392447d548f6d1266dacc9ff5049742_243x177.png)
其中:
* Controller中存放所有控制器代码。
* DataFixtures中是样本数据填充。
* Entity中是所有的数据实体。可以简单地理解为一张张表格。
* Form中存放所有的表单类型,用于生成表单。
* Repository中是对数据实体的一些自定义操作。
* Resources/config中有一部分是以YML形式定义的Doctrine数据实体;另一部分可以存放针对本包的配置文件,如`routing.yml`文件。
* Resources/views中会存放所有本包要用到的视图模板,以Twig语法写成。
* Tests中可以存放各种测试文件,既可以是单元测试也可是是功能测试。
* Twig中存放着专为Twig编写的定制过滤器。
在实际应用中,你的应用可能不会有这么多目录。一个典型的SF2安装,是没有`DataFixtures`, `Form`,`Repository`, `Twig`等目录的。
事实上,有些目录的命名也完全是任意的。上面截屏中的名字只是列出了一个我所开发的应用中的例子。
- 引言
- 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 结语