创建项目

安装Symfony

过去我们使用Composer创建项目,现在我们推荐使用Symfony Installer

最佳实践

使用Symfony Installer来创建项目

浏览Installation Chapter来学习如何使用Symfony Installer。

创建博客应用

搞定如上后,你就可以创建一个新的Symfony项目了。在命令行控制台进入你拥有权限的目录后运行如下命令:

# Linux, Mac OS X
$ cd projects/
$ symfony new blog

# Windows
c:\> cd projects/
c:\projects\> php symfony.phar new blog

这条命令会创建一个叫做blog的目录,里面包含了一个全新的、最新稳定版本的Symfony项目。另外,安装包还会检查你的系统是否能够顺利运行Symfony应用。如果不能,它会告诉你缺少了那些要求。

Symfony的发布都会因为安全因素而电子签名。如果你想核实Symfony安装的完整性,可以移步public checksums repository然后按照如下步骤去核实签名。

组织应用

创建项目后,进入blog目录你会发现有一些自动生成好的文件和目录:

blog/
├─ app/
│  ├─ console
│  ├─ cache/
│  ├─ config/
│  ├─ logs/
│  └─ Resources/
├─ src/
│  └─ AppBundle/
├─ vendor/
└─ web/

这种文件和目录层级是Symfony提供的惯例,用来组织你的项目。各个目录的目的:

Application Bundle(应用Bundle)

当2.0发布的时候,大多数的开发者都沿用了1.x的方法把项目拆分到各自的模块里,这也是为什么很多Symfony应用使用Bundle来拆分代码到各自的逻辑特性中,例如UserBundle,ProductBundle,InvoiceBundle等等。

但是一个Bundle的意义在于它是一个可以复用的独立软件,假若UserBundle不能在别的Symfony项目使用,那它就不应该被单独的划出来作为Bundle。此外,如果InvoiceBundle依赖于ProductBundle的话,把它们作为两个Bundle分开始用显然也没什么好处。

最佳实践

只创建一个AppBundle来存放业务逻辑

只使用一个AppBundle会让你的项目代码变得更简洁明了,从2.6开始,官方Symfony文档将使用AppBundle。

在你自己的vendor中没必要给AppBundle加前缀了(例如AcmeAppBundle),原因是这个AppBundle不会分享给别人使用

另一个新建Bundle的情形是当你要改写第三方Bundle时(例如控制器),请移步How to Use Bundle Inheritance to Override Parts of a Bundle

总之,下面列出了关于组织目录结构的最佳实践

blog/
├─ app/
│  ├─ console
│  ├─ cache/
│  ├─ config/
│  ├─ logs/
│  └─ Resources/
├─ src/
│  └─ AppBundle/
├─ vendor/
└─ web/
   ├─ app.php
   └─ app_dev.php

如果你的Symfony安装完成后没有自动生成的AppBundle,你可以运行如下命令来生成它: $ php app/console generate:bundle --namespace=AppBundle --dir=src --format=annotation --no-interaction

扩展目录结构

如果你的项目或者架构需要对默认的Symfony目录结构做改变的话,你可以override the location of the main directories: cache/,logs/和web/。

此外,在Symfony3发布的时候你将会看到一些在目录结构上发生的轻微变化:

blog-symfony3/
├─ app/
│  ├─ config/
│  └─ Resources/
├─ bin/
│  └─ console
├─ src/
├─ var/
│  ├─ cache/
│  └─ logs/
├─ vendor/
└─ web/

以上都是些表面上的变化,但就目前为止,我们还是推荐你使用Symfony目录结构。

上一章:介绍Symfony框架最佳实践

下一章:配置