为什么使用一个框架?

一些程序员强烈反对使用框架。他们认为框架臃肿、缓慢且难以学习。 他们说框架是不必要的,你可以不用框架编写更好的代码。 关于使用框架的缺点有一些合理的观点。然而,使用框架也有许多优势。

使用框架的原因

下面是您可能考虑使用框架的一些原因:

  • 快速开发:框架提供了大量的功能。这意味着您可以更快地构建 Web 应用程序。您不必编写太多代码,因为框架提供了许多您需要的功能。
  • 一致性:框架提供一种一致的做事方式。这使您更容易理解代码的工作原理,也使其他开发人员更容易理解您的代码。如果您逐个脚本编写,尤其是在团队开发中,可能会失去脚本之间的一致性.
  • 安全性:框架提供安全特性,帮助保护您的 Web 应用程序免受常见的安全威胁。这意味着您不必过于担心安全,因为框架为您处理了很多工作。
  • 社区:框架有庞大的开发人员社区。这意味着在遇到问题或疑问时可以从其他开发人员那里获得帮助。这还意味着有很多资源可帮助您学习如何使用框架。
  • 最佳实践:框架使用最佳实践构建。这意味着您可以从框架中学习,并在自己的代码中使用相同的最佳实践。这有助于您成为更好的程序员。有时候你不知道你不知道的东西会使你最终后悔。
  • 可扩展性:框架被设计为可扩展。这意味着您可以向框架添加自己的功能。这使您能够构建根据您特定需求定制的 Web 应用程序。

Flight 是一个微框架。这意味着它又小又轻量。它的功能不及像 Laravel 或 Symfony 这样的大型框架多。 然而,它确实提供了构建 Web 应用程序所需的许多功能。而且学习和使用它也很容易。 这使其成为迅速轻松构建 Web 应用程序的不错选择。如果您对框架还不熟悉,Flight 是一个很好的开始框架。 它将帮助您了解使用框架的优势,而不会让您在太复杂的内容中迷失方向。 在您有了使用 Flight 的经验后,将更容易转向像 Laravel 或 Symfony 这样更复杂的框架, 但 Flight 仍然可以构建成功的强大应用程序。

什么是路由?

路由是 Flight 框架的核心,但究竟是什么呢?路由是将 URL 与代码中的特定功能匹配的过程。 这是您可以根据被请求的 URL 使您的网站执行不同操作的方法。例如,当用户访问 /user/1234 时,您可能希望显示用户的个人资料, 但当他们访问 /users 时显示所有用户的列表。所有这些都通过路由完成。

可能像这样运作:

  1. 用户转到您的浏览器并键入 http://example.com/user/1234
  2. 服务器收到请求,检查 URL 并将其传递到您的 Flight 应用程序代码。
  3. 假设在您的 Flight 代码中有类似 Flight::route('/user/@id', [ 'UserController', 'viewUserProfile' ]); 这样的东西。 您的 Flight 应用程序代码检查 URL 并看到它匹配您定义的路由,然后运行为该路由定义的代码。
  4. 然后 Flight 路由将运行并调用 UserController 类中的 viewUserProfile($id) 方法,将 1234 作为 $id 参数传入该方法。
  5. 您的 viewUserProfile() 方法中的代码将运行并执行您告诉它要执行的操作。 您可能会输出一些用户资料页的 HTML,或者如果这是一个 RESTful API,则可能打印出包含用户信息的 JSON 响应。
  6. Flight 将其整理起来,生成响应头并将其发送回用户的浏览器。
  7. 用户充满喜悦,自我给自己一个温暖的拥抱!

为什么重要?

拥有一个合适的中心化路由器实际上会大大简化您的生活!起初可能有点难以看到。以下是一些原因:

  • 中心化路由:您可以将所有路由集中在一个地方。这使您更容易查看您拥有的路由以及它们的作用。 如果需要,还可以更轻松地对其进行更改。
  • 路由参数:您可以使用路由参数将数据传递到路由方法中。这是保持代码整洁和有组织的好方法。
  • 路由组:您可以将路由分组。这对保持代码整洁以及对一组路由应用中间件非常有用。
  • 路由别名:您可以为路由分配别名,以便稍后在代码中动态生成 URL(比如模板)。例如:您可以将 user_view 作为别名, 而不是在代码中硬编码 /user/1234,以后在决定更改为 /admin/user/1234 时,您无需更改所有硬编码的 URL,只需更改与路由关联的 URL。
  • 路由中间件:您可以将中间件添加到路由中。中间件非常有用,可以为应用程序添加特定的行为,例如验证某个用户能否访问某个路由或一组路由。

可能您熟悉逐个脚本的方式创建网站。您可能有一个名为 index.php 的文件,其中包含一堆 if 语句,以检查 URL,然后根据 URL 运行特定函数。 这是一种形式的路由,但不够有组织并且很快就会失控。Flight 的路由系统是一种更有组织和强大的处理路由的方式。

这样?


// /user/view_profile.php?id=1234
if ($_GET['id']) {
    $id = $_GET['id'];
    viewUserProfile($id);
}

// /user/edit_profile.php?id=1234
if ($_GET['id']) {
    $id = $_GET['id'];
    editUserProfile($id);
}

// 等等...

还是这样?


// index.php
Flight::route('/user/@id', [ 'UserController', 'viewUserProfile' ]);
Flight::route('/user/@id/edit', [ 'UserController', 'editUserProfile' ]);

// 可能在您的 app/controllers/UserController.php 中
class UserController {
    public function viewUserProfile($id) {
        // 做一些事情
    }

    public function editUserProfile($id) {
        // 做一些事情
    }
}

希望您开始看到使用中心化路由系统的好处。长期而言,这将更易于管理和理解!

请求与响应

Flight 提供了一种简单易用的方式处理请求和响应。这是 Web 框架的核心。它接收来自用户浏览器的请求, 处理它,然后发送回响应。这就是您可以构建显示用户资料、让用户登录或让用户发布新博客文章等功能的 Web 应用程序的方法。

请求

当用户访问您的网站时,请求是用户的浏览器发送到服务器的内容。这个请求包含关于用户想要执行的操作的信息。 例如,它可能包含关于用户想要访问的 URL、用户想要发送到您的服务器或从用户那里接收的数据的信息。重要的是要知道请求是只读的。 您无法更改请求,但可以从中读取数据。

Flight 提供了一种简单的方法来访问有关请求的信息。您可以使用 Flight::request() 方法来访问请求的信息。 此方法返回一个包含请求信息的 Request 对象。您可以使用这个对象来访问请求的信息,例如 URL、方法或用户发送到您的服务器的数据。

响应

当用户访问您的网站时,服务器发送给用户浏览器的内容就是响应。这个响应包含关于服务器要执行的操作的信息。 例如,它可能包含关于服务器想要发送给用户的数据、服务器想要从用户那里接收的数据或服务器想要存储在用户计算机上的数据的信息。

Flight 提供了一种简单的方法将响应发送给用户的浏览器。您可以使用 Flight::response() 方法发送响应。 此方法接受一个 Response 对象作为参数,并将响应发送给用户的浏览器。您可以使用这个对象将响应发送给用户的浏览器,例如 HTML、JSON 或文件。 Flight 可以帮助您自动生成响应的某些部分,使事情变得容易,但最终您可以控制发送给用户的内容。