简介

Symfony是一系列可重用的独立,解耦和聚合的PHP组件的集合,用来解决常见Web开发问题。相对于使用这些底层的组件,您可以使用随时可用的Symfony全栈Web框架,它基于这些组件...或者你可以创建自己的框架。本教程是后者。

为什么要创建自己的PHP框架

首先我们为什么要创建自己的PHP框架呢? 你看看周围,所有人都会告诉你重新造轮子是一个错误,你应该选择一个现有的框架并且忘掉这件事(写一个自己的框架)吧。大多数时候他们说的没错,但是还是有几个良好的理由促使你去写一个自己的框架:

  • 不仅学习现代web框架的底层实现,还将特别的学习Symfony全栈框架的内部实现;

  • 为你的特定需求量身订造一个框架(首先你要确定你有明确的需求);

  • 创建一个框架 just for fun(用一种learn-and-throw-away的方式);

  • 用大量近期web开发良好实践去重构一个旧的或者已经存在的应用;

  • 向整个世界证明你可以创建一个自己的框架了(虽然并没有什么影响...)。

这个教程将引导你一步步的去创建一个web框架。每一个你都可以得到一个可完整工作的框架,你可以将这个框架作为自己的或者继续扩展。我们将以一个简单的框架开始,并且一步步的添加更多的特性。最终,你将获得一个全能的全栈web框架。 当然,每一步都可能顺带学习Symfony的组件。

如果你没有时间阅读整本书,或者你想要快速开始,你也可以看一下Silex,这是一个基于Symfony组件的微型框架。它的代码很简洁,并且使用了很多的Symfony组件。

很多现在web框架对外宣传他们是MVC框架。这个教程不将讨论MVC模式,因为Symfony组件能够去创建任何类型的框架,不只是MVC结构。不管怎样,如果你看过MVC的语义,本书将告诉你怎么创建一个框架的控制器部分。对于Model和View部分,根据你个人的喜欢,你可以选择现有的第三方类库(Model可以选择 Doctrine, Propel 或者 plain-old PDO; View可以选择 PHP 或者 Twig)。

当我们在创建一个框架的时候,一味的遵从MVC模式不是正确的目标。我们的主要目标应该是分离关注点;这个才是你真正需要关心的设计模式。Symfony组件的基本原则是基于HTTP规范的,因此,你即将创建的框架应该更准确的标识为一个HTTP框架或者Request/Response框架。

提前准备

仅仅阅读怎么去创建一个框架是不够的,你应当跟随我们的脚步并且打完教程所有实例的代码。关于这一点,你需要较新版本的PHP(5.59或者更新),一个web服务器(例如Apache,Nginx或者PHP内置web服务器),以及对PHP和面对对象编程有比较好的了解。 准备好了吗?开始阅读!

引导

在你思考创建框架之前,你应当思考一些规范:在哪里放置你的代码,怎么命名你的类,怎么引用外部的依赖,等等。

为了存放你的框架,在你的机器上创一个目录:

$ mkdir framework
$ cd framework

依赖管理

为你的框架安装所需Symfony组件,你需要使用到Composer,一个PHP的依赖管理工具。如果你还没有安装,现在就download and install Composer

我们的项目

我们不将从头开始创建我们的项目,而是一遍又一遍的写同一个“应用”,一次增加一个抽象。让我们以一个PHP中最简单的web应用开始:

// framework/index.php
$input = $_GET['name'];

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

你可以使用PHP的内置服务器,在浏览器中测试这个伟大的应用(http://localhost:4321/index.php?name=Fabien):

$ php -S 127.0.0.1:4321

除此之外,你可以使用自己的服务器(Apache,Nginx,等等)。

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

results matching ""

    No results matching ""