Symfony框架因具备相当的 弹性而广为人知,进而被用于构建从小网站,到处理十亿连接的企业级程序,甚至被当作其他 框架的底层。由于Symfony是2011年7月发布,sf社区已经透知其可能性,以及如何把事情做到最好

这些社区资源——例如博客或PPT——已经演变成一套非官方的推荐材料,用于开发Symfony程序。不幸的是,这些文章中的许多内容,并非web开发实际所需。更多时候,它们非必要地将事情复杂化了,而且没有遵循Symfony原本的编程哲学。

本文讲的是什么

这篇向导文字的目标即是修补上述欠点,描述了用Symfony完整版框架开发web程序时的最佳实践。这些最佳实践,契合了框架创始人Fabien Potencier所设想的哲学体系。

Note

Best Practice 这个名词的意思是“用来产生‘接近最优’结果的经过有序组织的流程” 。而这恰好是本文所希望提供的。就算你不能同意每条建议,我们仍坚信它们能够帮你在构建强大的程序时降低复杂度。

本系列格外适合

  • 用Symfony完整版框架开发的网站和网络程序。 对于其他需求,本文可以做为一个起始点,然后你可扩展它至符合你的特殊需求

  • 那些对Symfony社区公开分享的bundles

  • 那些已经创建了自己的标准的高级开发者或团队

  • 那些拥有高度定制需求的复杂程序

  • 那些在公司内部共享的bundles

我们都知道,旧习难改,这些最佳实践很可能令你感到震撼。但是遵循它们,你的程序开发将会更快,而复杂度却更低,程序的质量甚至更高。这是个向前推进的目标,应被持续改进。

牢记这些都是可选建议(optional recommendations),你和你的团队在开发Symfony程序时可以遵守或不予采纳。你当然可以维持自己旧有的实践和方法体系。Symfony有足够大的弹性能够适合你的需求。这一点永远不会变。

本文适合谁读(提示:它并非入门教程)

任何一个Symfony开发者,不管你是专家还是新人,都可以阅读本文。但因为这并非入门教程,你需要一些背景知识以便跟得上行文。如果你是纯全新的Symfony用户,欢迎你!请先转向快速上手

我们有意地控制了文章长度。我们不希望重复地解释那些你已经在海量Symfony文档中找到的东西,比如去讨论DI或前端控制器这些。我们专注于解释“如何把你已经知道的付诸实践”。

程序

除了文字之外,我们还为最佳实践开发了例程。这个项目被称为Symfony Demo Application,可以通过Symfony安装器获取。首先,下载和安装它,然后执行以下命令即可下载demo程序:

  1. $ symfony demo

DEMO程序是一个简单的博客系统,这有助于让我们集中精力到Symfony概念和功能上,而不至被复杂实现的细节淹没。本文并不是掰开揉碎地讲解DEMO程序的代码,你看到的将是被筛选出来的码段。

不要更新你的既有程序

读完本文之后,一些人可能认为,需要重构自己的Symfony程序代码。对此,我们的态度十分明确:你不应该重构你的既有程序令其遵循这些最佳实践。不这样做的原因有很多:

  • 你的程序并没有错,只是遵循着其他指导原则;

  • 对代码库进行完整重构很有可能向程序中引入错误;

  • 花时间去重构,不如进行单元测试,或添加功能以提高用户体验来得值。