0

0

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

舞姬之光

舞姬之光

发布时间:2024-11-29 16:23:47

|

951人浏览过

|

来源于freecodecamp.org

转载

如果您刚刚开始 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-structures.switch.php) 或 [match](https://www.php.net/manual/en/control-structures.match.php) 语句来定义路由系统。

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

项目设置

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

Image文件结构

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

立即学习PHP免费学习笔记(深入)”;

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

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

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

使用 Apache 重定向

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

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php
  • 第 1 行:我们激活 Apache 服务器的运行时重写引擎。
  • 第 2 行:我们限制对物理文件的访问。
  • 第3行:我们将所有即将到来的请求重定向到index.php。

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

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

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

使用 NGINX 重定向

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

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

location / {
        try_files $uri $uri/ /index.php}

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

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

修改后重新加载服务器。

如何创建路由系统

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

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

$request = $_SERVER['REQUEST_URI'];

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

switch ($request) {
     case '/views/users':
        require __DIR__ . '/views/users.php';

     case '/views/department':
        require __DIR__ . '/views/dep.php';}

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

ISite企业建站系统1.2.3
ISite企业建站系统1.2.3

ISite企业建站系统是为懂点网站建设和HTML技术的人员(例如企业建站人员)而开发的一套专门用于企业建站的开源免费程序。本系统采用了全新的栏目维护模式,内容添加过程中,前后台菜单是一样的,需要维护前台某个栏目的内容,只需要进后台相应栏目即可,一般的企业人员只需要查看简易的说明就可以上手维护网站内容。通过自由度极高的模板系统,可以适应大多数情况的界面需求,后台带有标签生成器,建站只需要构架好HTM

下载

让我们假设我们的变量保存值 /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 文件中:

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

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

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

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

在Views 文件

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

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

Home

Welcome in my app.

Users

List of our users.

Conct us

Getting in touch is easy. Just email us

404

You've reached the end of Internet.

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

最终想法

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

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

相关文章

路由优化大师
路由优化大师

路由优化大师是一款及简单的路由器设置管理软件,其主要功能是一键设置优化路由、屏广告、防蹭网、路由器全面检测及高级设置等,有需要的小伙伴快来保存下载体验吧!

下载

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

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

1999

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1325

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1229

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

948

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1402

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1230

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1440

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1303

2023.11.13

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

65

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.2万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 6.9万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号