目录
路由如何工作
项目设置
如何将所有 HTTP 请求重定向到路由器
使用 Apache 重定向
使用 NGINX 重定向
如何创建路由系统
在Views 文件
最终想法
首页 后端开发 php教程 如何从头开始为 PHP 应用程序构建路由系统

如何从头开始为 PHP 应用程序构建路由系统

Nov 29, 2024 pm 04:23 PM
php

如果您刚刚开始 PHP 开发之旅, 您很可能在 URL 中使用完整的文件名来导航 应用程序,例如 server/contact.php。不用担心,我们都是这样开始的,这就是我们学习的方式。

今天,我想帮助您改进浏览文件的方式 应用。我们将讨论路由,因为它在任何情况下都至关重要 现代应用。它将帮助你在你的事业上更进一步 专业的PHP开发。

路由系统简单地映射一个HTTP 向请求处理程序(函数或方法)发出请求。换句话说,它 定义了我们如何导航或访问应用程序的不同部分,而无需 需要输入文件名。您可以通过创建或设置来做到这一点 路线(或路径)。例如,路由服务器/联系人允许我们访问 contact.php 文件。

截屏2024-11-29 16.11.16.png

路由如何工作

首先,让我回忆一下什么路由是。路由 允许我们以更好的方式构建我们的应用程序并摆脱混乱 网址。这是任何优秀路由系统都提供的两个主要功能:

  • 定义为每个传入请求运行哪个操作。
  • 生成 SEO 友好的 URL(例如 /views/users 而不是views/user.php?all).

要做一个路由系统,我们需要一个路由器,这是没有的超过 我们的应用程序的入口文件。默认情况下,该入口文件名为index.php。在文件内部,我们通过 [switch](https://www.php.net/manual/en/control-structs.switch.php) 或 [match](https://www.php) 定义了路由系统。 net/manual/en/control-structs.match.php) 语句。

最后但并非最不重要的一点是,我们必须将所有请求重定向到路由器。这是在 PHP 服务器的配置文件中完成的。

项目设置

在继续之前,让我们看看项目会是什么样子:

如何从头开始为 PHP 应用程序构建路由系统文件结构

使用下面的 shell 命令来启动项目:

mkdir php-routing & cd php-routingtouch index.php .htaccess
登录后复制
登录后复制
登录后复制
  • .htaccess:目录级 Apache 配置文件。如果使用 NGINX 服务器则不需要它。
  • index.php:这是项目的路由器和入口文件。所有传入请求都将重定向到此处。
  • views:此文件夹包含项目的所有 UI。

如何将所有 HTTP 请求重定向到路由器

前面我们说过重定向是在 PHP 服务器中完成的 配置文件。因此,您需要根据您的情况进行一些调整 使用 Apache 或 NGINX 服务器。

使用 Apache 重定向

在这里,我们可以轻松使用我们已经在项目根目录中创建的 .htaccess 文件。添加以下指令:

mkdir php-routing & cd php-routingtouch index.php .htaccess
登录后复制
登录后复制
登录后复制
  • 第 1 行:我们激活 Apache 服务器的运行时重写引擎。
  • 第 2 行:我们限制对物理文件的访问。
  • 第3行:我们将所有即将到来的请求重定向到index.php。

注意:如果站点或应用程序位于服务器的根目录(或者如果我们没有虚拟主机),则 .htaccess 应该如下所示:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php
登录后复制
登录后复制

在上面的代码中,替换/folder/ 包含您站点的文件夹的名称。

使用 NGINX 重定向

默认配置文件是 name nginx.conf。该文件可以在 etc/nginx、usr/local/nginx/conf 或 /usr/local/etc/nginx 中找到。

要重定向到index.php,请使用以下命令:

RewriteEngine On
RewriteBase /folder/
RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /folder/index.php [L]
登录后复制
登录后复制

位置 / 块指定这是所有位置的匹配,除非明确指定位置 /

try_files 指令告诉服务器,对于与该位置中的块匹配的 URI 的任何请求,首先尝试 $uri(或 $uri/),如果文件存在,则提供该文件。否则,将使用后备选项 (index.php)。最后的行为就是我们想要的。

修改后重新加载服务器。

如何创建路由系统

我们现在知道路由是如何工作的,并且我们正在甚至发送所有请求 到路由器。现在是时候在index.php中编写路由器的代码了。

首先,创建一个变量来保存HTTP请求字符串:

location / {
        try_files $uri $uri/ /index.php}
登录后复制
登录后复制

这个变量将帮助我们进行比较有很多路线(路径)并调用相应的视图接口。

$request = $_SERVER['REQUEST_URI'];
登录后复制
登录后复制

这里发生了什么? switch 语句类似于同一表达式(变量)上的一系列 if 语句。仅当找到其表达式计算结果与 switch 表达式的值匹配的 case 语句时,它才执行代码。让我来说明一下,以便您能够很好地理解它。

让我们假设我们的变量保存值 /views/users/。当上面的代码运行时,PHP 将检查值 /views/users 是否等于 case 语句的值,在我们的例子中是 /views/users。因此,此条件将评估为 true,PHP 将调用文件 /views/users.php。如果条件计算结果为 false,PHP 将检查下一个 case 语句,直到 switch 块结束。

注意:每次 case 语句计算结果为 true,PHP 将继续执行以下 case 中的代码陈述而无需评估这些案例陈述。在我们的例子中,PHP 还需要views/dep.php。为了避免这种“不良行为”,您必须在每个 case 语句后添加 break 语句。

现在将所有内容放入我们的 index.php 文件中:

mkdir php-routing & cd php-routingtouch index.php .htaccess
登录后复制
登录后复制
登录后复制

如您所知,我们首先将用户请求存储在 $request 变量中,然后在 switch 语句中使用它。为了代码简洁,我创建了一个变量来保存视图目录名称。

您还会注意到另外两件事:

  • “”和“/”当用户位于应用程序或网站的根目录时,用于匹配 site.com 以及 site.com/。
  • 有一个特殊的 case 语句,默认,匹配任何与其他情况不匹配的内容,即当路线未知时。

现在让我们在视图中添加一些虚拟数据。

在Views 文件

我们已经在views 目录中创建了所有文件。让我们移动到这个目录并在每个文件中添加一些内容。

只需在每个文件中添加一些内容:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php
登录后复制
登录后复制
RewriteEngine On
RewriteBase /folder/
RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /folder/index.php [L]
登录后复制
登录后复制
location / {
        try_files $uri $uri/ /index.php}
登录后复制
登录后复制
$request = $_SERVER['REQUEST_URI'];
登录后复制
登录后复制

如您所见,每个文件只包含一个标题和一个段落。随意添加您喜欢的任何内容并测试路由器。

最终想法

在本教程中,您学习了如何从头开始创建基本的路由系统,包括:

  • 如何在项目根目录创建一个名为index.php的文件。这是您的应用程序的路由器。
  • 如何将所有传入请求重定向到路由器。您可以在服务器的配置文件中执行此操作。
  • 如何在路由器中使用 switch 语句创建路由系统。

以上是如何从头开始为 PHP 应用程序构建路由系统的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1667
14
CakePHP 教程
1426
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1255
24
PHP:网络开发的关键语言 PHP:网络开发的关键语言 Apr 13, 2025 am 12:08 AM

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

PHP和Python:比较两种流行的编程语言 PHP和Python:比较两种流行的编程语言 Apr 14, 2025 am 12:13 AM

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP与Python:了解差异 PHP与Python:了解差异 Apr 11, 2025 am 12:15 AM

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

PHP行动:现实世界中的示例和应用程序 PHP行动:现实世界中的示例和应用程序 Apr 14, 2025 am 12:19 AM

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP的持久相关性:它还活着吗? PHP的持久相关性:它还活着吗? Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。

PHP与其他语言:比较 PHP与其他语言:比较 Apr 13, 2025 am 12:19 AM

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP和Python:代码示例和比较 PHP和Python:代码示例和比较 Apr 15, 2025 am 12:07 AM

PHP和Python各有优劣,选择取决于项目需求和个人偏好。1.PHP适合快速开发和维护大型Web应用。2.Python在数据科学和机器学习领域占据主导地位。

See all articles