跳到内容

简介

编辑此页

Symfony 是一组可重用的、独立的、解耦的和有凝聚力的 PHP 组件,用于解决常见的 Web 开发问题。

您可以选择使用这些底层组件,也可以使用基于这些组件的、即用型的 Symfony 全栈 Web 框架...或者您可以创建自己的框架。本教程是关于后者的。

您为何想要创建自己的框架?

您为什么首先想要创建自己的框架?如果您环顾四周,每个人都会告诉您,重新发明轮子是一件坏事,您最好选择一个现有的框架,完全忘记创建自己的框架。大多数时候,他们是对的,但也有一些很好的理由开始创建自己的框架

  • 为了更多地了解现代 Web 框架的底层架构,特别是 Symfony 全栈框架的内部结构;
  • 为了创建一个根据您的特定需求量身定制的框架(但首先要确保您的需求 действительно 是特定的);
  • 为了实验性地创建一个框架以获得乐趣(以学习和抛弃的方式);
  • 为了重构需要大量近期 Web 开发最佳实践的旧/现有应用程序;
  • 为了向世界证明您实际上可以自己创建一个框架(...但只需少量努力)。

本教程将逐步指导您创建一个 Web 框架。在每个步骤中,您都将拥有一个完全可用的框架,您可以按原样使用,也可以作为您自己的框架的起点。它将从一个简单的框架开始,并随着时间的推移添加更多功能。最终,您将拥有一个功能齐全的全栈 Web 框架。

每个步骤都将是更多地了解一些 Symfony 组件的机会。

许多现代 Web 框架都宣传自己是 MVC 框架。本教程不会讨论 MVC 模式,因为 Symfony 组件能够创建任何类型的框架,而不仅仅是遵循 MVC 架构的框架。无论如何,如果您查看 MVC 语义,本书是关于如何创建框架的控制器部分。对于模型和视图,这真的取决于您的个人喜好,您可以使用任何现有的第三方库(Doctrine、Propel 或纯旧 PDO 用于模型;PHP 或 Twig 用于视图)。

在创建框架时,遵循 MVC 模式不是正确的目的。主要目标应该是关注点分离;这可能是您真正应该关心的唯一设计模式。Symfony 组件的基本原则侧重于 HTTP 规范。因此,您将要创建的框架应该更准确地标记为 HTTP 框架或请求/响应框架。

开始之前

阅读如何创建框架是不够的。您将必须跟随并实际键入本教程中包含的所有示例。为此,您需要最新版本的 PHP(7.4 或更高版本就足够了)、Web 服务器(如 Apache、nginx 或 PHP 的内置 Web 服务器)、良好的 PHP 知识以及对面向对象编程的理解。

准备好了吗?继续阅读!

引导

在您甚至可以考虑创建第一个框架之前,您需要考虑一些约定:您将在哪里存储代码,您将如何命名类,您将如何引用外部依赖项等等。

要存储您的新框架,请在您机器上的某个位置创建一个目录

1
2
$ mkdir framework
$ cd framework

依赖管理

要安装您的框架所需的 Symfony 组件,您将使用 Composer,这是一个 PHP 项目依赖管理器。如果您还没有安装它,请立即下载并安装 Composer

我们的项目

我们不会从头开始创建框架,而是要一遍又一遍地编写相同的“应用程序”,每次添加一个抽象层。让我们从我们可以在 PHP 中想到的最简单的 Web 应用程序开始

1
2
3
4
// framework/index.php
$name = $_GET['name'];

printf('Hello %s', $name);

您可以使用 Symfony 本地 Web 服务器 在浏览器中测试这个出色的应用程序 (http://127.0.0.1:8000/index.php?name=Fabien)

1
$ symfony server:start

下一章中,我们将介绍 HttpFoundation 组件,看看它能给我们带来什么。

这项工作,包括代码示例,根据 Creative Commons BY-SA 3.0 许可协议获得许可。
目录
    版本