步骤 2: 项目介绍

5.0 version
Maintained

项目介绍

我们需要找一个项目来开发,这可是个不小的挑战。我们需要一个足够大的项目,可以涵盖 Symfony 的方方面面;但同时它又需要足够小,我不希望你去重复开发类似的功能,那会让你感到厌倦。

揭开项目的面纱

鉴于本书要在阿姆斯特丹的 Symfony 大会上发布,如果该项目和 Symfony 以及会议这些概念有点关联,这会是个不错的主意。做一个 留言本 的项目,你觉得如何? 在法语里,我们把留言本称为 livre d’or。在2019年,开发一个留言本会有种老派和过时的感觉,我喜欢这感觉!

那就用这个主题了。这个项目围绕着从会议上收集反馈:首页上是一个会议列表,每个会议有自己的页面,上面有很多友善的评论。每个评论由一些简短的文本和一个可选的照片组成,照片是会议时拍摄的。我想以上这些就是初始开发时的所有需求了。

这个 项目 会包含若干个 应用程序。一个采用 HTML 前端的传统网页 应用、一个 API 应用和一个用于手机端的单页应用。听起来如何?

学习就是实践

对于技能的掌握只有通过实践才能达成,没有其它可多说的。当你阅读一本关于 Symfony 的书时,再用个人电脑开发一个应用就更好了。本书的特别之处就在于一切都已就绪,让你可以跟着书的步骤来编码,并且得到的结果和我在自己电脑上开发时得到的一样。

本书包含您需要编写的所有代码以及为获得最终结果而需要执行的所有命令。没有任何代码和命令在书中缺失。这成为可能,要归功于现代 Symfony 应用几乎没有样本代码。我们要一起写的大部分代码都是项目的 业务逻辑 。其它的基本都是自动化的,或者是为我们自动生成的代码。

查看最终架构图

即便这个项目的想法很简单,我们也不会只开发一个类似 “Hello World” 的入门项目。我们不会仅仅使用 PHP 和数据库。

我们的目标是创建一个有一定复杂度的项目,这种复杂度在真实开发中才会遇到。想要一个证据?看一下这个项目的最终架构图。

../_images/infrastructure.svg

开发这样的一个项目,只要写很少量的代码,这是使用一个框架的好处之一。

  • 网站的 src/ 目录下有 20 个 PHP 类。
  • 根据 PHPLOC 的报告,PHP 的逻辑代码行(LLOC)有 550 行;
  • 分布在 3 个文件中的 40 行配置微调(以注解和 YAML 的格式),主要是用来配置后台的设计。
  • 20 行的开发环境软件配置(Docker);
  • 100 行的生产环境软件配置(SymfonyCloud);
  • 5 个显式的环境变量。

准备好来面对挑战了吗?

获取项目的源代码

为了延续这个项目主题体现的老派风格,我本可以随书附一张 CD 来包含源代码,对吧?但用一个 Git 仓库来代替 CD,怎么样?

在你本地电脑上找个地方克隆这个代码仓库 guestbook repository

1
$ symfony new --version=5.0-4 --book guestbook

该仓库包含了本书的所有代码。

请注意,我们不用 git clone,而是用 symfony new,因为它所做的不仅仅是从代码仓库复制代码(代码仓库在 GitHub 的 the-fast-track 机构名下:https://github.com/the-fast-track/book-5.0-4)。该命令还启动 web 服务器和容器,更新数据库结构,载入固定的伪数据……执行完该命令后,网站就运行了,可以被访问。

这里的代码100%保证和书中的保持一致(使用上述的代码仓库 URL)。尝试让书中的更新和仓库里的代码手工保持一致,这几乎是不可能的。我在过去试过,但失败了,这就是不可行的,尤其是对于我写的这种关于开发网站的书。由于每一章节都依赖前面的章节,一个改动可能会对后续章节带来影响。

好消息是:本书的代码仓库是从本书内容 自动生成 的。你没看错。我喜欢自动化所有的东西,所以我写了个脚本,它会读取书的内容并且生成一个 Git 代码仓库。这还有个良性的副作用:当更新本书内容时,如果更新的内容不一致或是我忘了更新一些指令,这个脚本就会执行失败。这就是 BDD, Book Driven Development


  • « Previous 步骤 1: 检查你的开发环境
  • Next » 步骤 3: 从零开始直到投入生产环境

This work, including the code samples, is licensed under a Creative Commons BY-NC-SA 4.0 license.