wackyblackie/steampixel-route

这是一个简单、小巧的单类PHP路由器,可以处理PHP项目的所有URL路由。

0.7.0 2021-03-22 08:11 UTC

This package is auto-updated.

Last update: 2024-09-07 16:08:51 UTC


README

嘿!这是一个简单且小巧的单类PHP路由器,可以处理项目的全部URL路由。它利用正则表达式和PHP的匿名函数创建一个轻量级且快速的路由系统。路由器支持动态路径参数,特殊404和405路由,以及验证请求方法如GET、POST、PUT、DELETE等。代码库非常小,非常易于理解。因此,您可以将其用作更复杂路由器的模板。

看看index.php文件。正如您所看到的,使用Route::add()方法向您的项目添加新路由。第一个参数接收路径段。您也可以在其中使用正则表达式来解析变量。所有匹配的变量将被推送到第二个参数中定义的处理方法中。第三个参数将匹配请求方法。默认方法是'get'。

📋 简单示例

// Require the class
include 'src\Steampixel\Route.php';

// Use this namespace
use Steampixel\Route;

// Add the first route
Route::add('/user/([0-9]*)/edit', function($id) {
  echo 'Edit user with id '.$id.'<br>';
}, 'get');

// Run the router
Route::run('/');

在index.php文件中,您将找到一个包含内置导航的更复杂示例。

🎶 使用Composer安装

只需运行composer require steampixel/simple-php-router,然后像这样将自动加载器添加到您的项目中:

// Autoload files using composer
require_once __DIR__ . '/vendor/autoload.php';

// Use this namespace
use Steampixel\Route;

// Add your first route
Route::add('/', function() {
  echo 'Welcome :-)';
});

// Run the router
Route::run('/');

⛺ 使用不同的基本路径

如果您的脚本位于子文件夹中(例如/api/v1),请在此处设置此基本路径

Route::run('/api/v1');

如果您使用Apache2,请勿忘记编辑.htaccess中的基本路径。

⏎ 使用return而不是echo

您不必使用echo来输出内容。您也可以使用return语句。所有返回的内容都将自动输出。

// Add your first route
Route::add('/', function() {
  return 'Welcome :-)';
});

⇒ 使用箭头函数

从PHP 7.4开始,您也可以使用箭头函数来输出内容。因此,您可以轻松使用外部变量,并编写更短的代码。请注意,箭头函数必须始终返回一个值。因此,您不能直接在此处使用echo。您可以在index.php中找到示例。然而,由于它仅在PHP 7.4中工作,因此它已被禁用。

Route::add('/arrow/([a-z-0-9-]*)', fn($foo) => 'This is a working arrow function example. Parameter: '.$foo );

📖 返回所有已知路由

这非常有用,例如,用于自动生成测试路由或帮助页面。

$routes = Route::getAll();
foreach($routes as $route) {
  echo $route['expression'].' ('.$route['method'].')';
}

此外,您可以使用像https://github.com/hoaproject/Regex这样的库为不同的表达式生成可工作的示例链接。

🧰 启用区分大小写的路由、尾部斜杠和多匹配模式

Route::run('/', false, false, false);的第二个、第三个和第四个参数默认设置为false。使用这些参数,您可以切换多个选项

  • 第二个参数:您可以通过将第二个参数设置为true来启用区分大小写的模式。
  • 第三个参数:默认情况下,路由器将忽略尾部斜杠。将此参数设置为true以避免此行为。
  • 第四个参数:默认情况下,路由器将仅执行第一个匹配的路由。将此参数设置为true以启用多匹配模式。

⁉ 有什么不正常的地方吗?

  • 请记住,在您的run()方法和.htaccess文件中将正确的基路径作为第一个参数设置。
  • 如果您使用Apache2,请确保在Apache2设置中启用了mod_rewrite:a2enmod apache2
  • Apache2是否真的加载了.htaccess文件?检查是否在Apache2配置中设置了AllowOverride All选项,如下例所示:
<VirtualHost *:80>
    ServerName mysite.com
    DocumentRoot /var/www/html/mysite.com
    <Directory "/var/www/html/mysite.com">
        AllowOverride All
    </Directory>
</VirtualHost>

🚀 页面、模板、主题、组件

这是一个简单的路由器。因此,没有任何模板。但它与 simplePHPComponentssimplePHPPortals 一起工作得非常完美。它包含一个完整的样板项目,包括这些依赖项和这个名为 simplePHPPages 的路由器。您可以用它来构建您的下一个项目。

🎓 需要哪些技能?

请注意,使用此路由器需要您对PHP有基本的了解。许多问题都源于人们缺乏基本的编程知识。因此,您应该具备以下技能:

请注意,如果您在使用此路由器时遇到问题,我们很乐意帮助您。不幸的是,我们没有很多时间,因此我们不能帮助您学习PHP基础知识。

🚢 使用Docker进行测试设置

我创建了一个小的Docker测试设置。

  1. 构建镜像: docker build -t simplephprouter docker/image-php-7.2

  2. 启动容器

    • 在Linux / Mac或Windows PowerShell中使用: docker run -d -p 80:80 -v $(pwd):/var/www/html --name simplephprouter simplephprouter
    • 在Windows CMD中使用 docker run -d -p 80:80 -v %cd%:/var/www/html --name simplephprouter simplephprouter
  3. 打开您的浏览器并导航到 https://

🪟 在Windows中使用IIS进行测试设置

由于IIS现在完全支持PHP,此示例可以使用包含的web.config运行。web.config中有一个重写规则,类似于 .htaccess 重写规则,但专门用于IIS。重写规则将所有传入请求发送到根目录下的 index.php。其余的由简单的PHP路由器处理。

设置

此设置教程假定您知道如何在IIS中创建站点并为http/https和自定义DNS设置绑定。如果您需要更多信息,这篇文章 https://docs.microsoft.com/en-us/iis/get-started/getting-started-with-iis/create-a-web-site 将帮助您完成这部分。

  1. 如果您还没有安装,请在Windows上安装PHP。这篇文章 安装IIS和PHP | Microsoft Docs 将指导您在Windows机器上安装所需的PHP依赖项。
  2. 在IIS管理器中,创建一个站点并将物理位置指向simplePHPRouter文件夹的根目录。建议您使用对该文件夹有“读取/写入”权限的帐户连接到物理位置。
  3. (可选) 在您的hosts文件中创建一个DNS条目,将127.0.0.1指向您为设置网站所使用的域名。
  4. 浏览到新创建的网站,示例网站现在应该显示。

✅ 待办事项

  • 为nginx创建演示配置

📃 许可证

本项目采用MIT许可证。有关更多信息,请参阅LICENSE。