为什么使用框架?
有些程序员强烈反对使用框架。他们认为框架臃肿、缓慢且难以学习。他们说框架是不必要的,你可以不用框架写出更好的代码。关于使用框架的缺点,确实有一些合理的观点。然而,使用框架也有很多优点。
使用框架的理由
以下是你可能需要考虑使用框架的一些原因:
- 快速开发:框架开箱即用地提供了大量功能。这意味着你可以更快地构建 Web 应用程序。你不需要写那么多代码,因为框架提供了你需要的许多功能。
- 一致性:框架提供了一致的做事方式。这让你更容易理解代码的工作原理,也让其他开发者更容易理解你的代码。如果你逐脚本编写,可能会在脚本之间失去一致性,尤其是在与开发团队合作时。
- 安全性:框架提供了安全特性,帮助保护你的 Web 应用免受常见安全威胁。这意味着你不必过分担心安全性,因为框架为你处理了很多安全问题。
- 社区:框架拥有大型的开发者社区,为框架做出贡献。这意味着当你有问题或疑问时,可以从其他开发者那里获得帮助。这也意味着有大量资源可以帮助你学习如何使用框架。
- 最佳实践:框架是使用最佳实践构建的。这意味着你可以从框架中学习,并在自己的代码中使用相同的最佳实践。这有助于你成为更好的程序员。有时候你不知道自己不知道什么,最终可能会吃亏。
- 可扩展性:框架设计为可扩展的。这意味着你可以向框架添加自己的功能。这允许你构建适合特定需求的 Web 应用程序。
Flight 是一个微框架。这意味着它小巧轻量。它不像 Laravel 或 Symfony 这样的大型框架那样提供那么多功能。 然而,它确实提供了构建 Web 应用程序所需的许多功能。它也易于学习和使用。 这使得它成为快速轻松构建 Web 应用程序的好选择。如果你是框架新手,Flight 是一个很好的入门框架。 它将帮助你了解使用框架的优势,而不会让你被太多的复杂性所累。 在你拥有一些 Flight 经验之后,转向更复杂的框架如 Laravel 或 Symfony 会更容易, 然而 Flight 仍然可以构建出成功、健壮的应用程序。
什么是路由?
路由是 Flight 框架的核心,但它到底是什么?路由是将 URL 匹配到代码中特定函数的过程。
这就是你如何根据请求的 URL 让你的网站执行不同操作的方式。例如,你可能希望在访问 /user/1234 时显示用户资料,
但在访问 /users 时显示所有用户的列表。这一切都是通过路由完成的。
它的工作方式可能像这样:
- 用户在浏览器中输入
http://example.com/user/1234。 - 服务器收到请求,查看 URL 并将其传递给 Flight 应用代码。
- 假设在你的 Flight 代码中有类似
Flight::route('/user/@id', [ 'UserController', 'viewUserProfile' ]);的内容。你的 Flight 应用代码查看 URL,发现它匹配了你定义的路由,然后运行你为该路由定义的代码。 - Flight 路由器随后运行并调用
UserController类中的viewUserProfile($id)方法,将1234作为方法中的$id参数传入。 - 你的
viewUserProfile()方法中的代码随后运行并执行你指定的操作。你最终可能会输出一些用户资料页面的 HTML,或者如果这是一个 RESTful API,你可能会输出带有用户信息的 JSON 响应。 - Flight 将这一切包装好,生成响应头并将其发送回用户的浏览器。
- 用户充满喜悦,给自己一个温暖的拥抱!
为什么它很重要?
拥有一个合适的集中式路由器实际上可以让你的生活变得轻松很多!只是一开始可能很难看到。以下是几个原因:
- 集中式路由:你可以将所有路由放在一个地方。这让你更容易看到有哪些路由以及它们的功能。如果需要修改也更容易。
- 路由参数:你可以使用路由参数将数据传递到路由方法中。这是保持代码整洁有序的好方法。
- 路由分组:你可以将路由分组在一起。这对于保持代码组织和为一组路由应用中间件非常有用。
- 路由别名:你可以为路由分配别名,以便在代码中稍后动态生成 URL(例如模板中)。例如:与其在代码中硬编码
/user/1234,不如引用别名user_view并将id作为参数传入。这在你决定稍后将其改为/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 帮助你自动生成部分响应内容以使事情变得简单,但最终你可以控制发送回用户的内容。