dlunamontilla/dlroute

DLUnire 或任何其他项目使用的路由系统。

v1.3.36 2024-06-01 18:09 UTC

README

DLRoute 是一个用于简化在 Web 应用程序中管理路由和 URL 地址的系统。

目前,它允许通过数据类型或正则表达式进行筛选,这一点将在下面进行介绍。

此外,它不仅支持表单提交,还支持将 JSON 格式的内容直接发送到请求体(body)。

特性

  • 简单和复杂路由的定义。
  • 支持不同的 HTTP 方法,如 GETPOSTPUTPATCHDELETE 等。
  • 路由中的变量参数。
  • 允许指定期望的参数数据类型,以及使用正则表达式。
  • 使用控制器和 callbacks 处理路由。
  • 灵活地集成到 Web 项目中。

安装

要开始使用 DLRoute,请按照以下步骤操作

  1. 使用 Composer 安装 DLRoute

    composer require dlunamontilla/dlroute
  2. 配置应用程序中的路由系统。

    请记住,所有请求都必须发送到一个基本文件(index.php),并且该文件应位于一个子目录中,例如 public/html_public 或一个自定义命名的目录。

  3. 使用适合请求的方法定义路由。

语法

GET 方法

DLRoute::get(string $uri, callable|array|string $controller): DLParamValueType;

POST 方法

DLRoute::post(string $uri, callable|array|string $controller): DLParamValueType;

PUT 方法

DLRoute::put(string $uri, callable|array|string $controller): DLParamValueType;

PATCH 方法

DLRoute::patch(string $uri, callable|array|string $controller): DLParamValueType;

DELETE 方法

DLRoute::delete(string $uri, callable|array|string $controller): DLParamValueType;

请注意,为了使路由生效,即执行控制器,您必须在所有路由的末尾添加以下行

DLRoute::execute();

它可以用于原生 PHP 项目,但它被设计用于 mini-framework DLUnire(目前处于开发中)。

路由定义示例

使用数组、字符串和 callbacks 定义路由的示例。

使用数组作为第二个参数的 array 定义 HTTP GET 请求的路由。

use DLRoute\Requests\DLRoute as Route;
use DLRoute\Test\TestController;

Route::get('/ruta', [TestController::class, 'method']);

根据前面的示例,执行的是 URI /rutaTestController 类的 method 方法。

我们可以使用参数化路由重复相同的示例;例如

use DLRoute\Requests\DLRoute as Route;
use DLRoute\Test\TestController;

Route::get('/ruta/{parametro}', [TestController::class, 'method']);

前面的示例是参数化路由的示例,它执行了同一控制器的相同方法。

请记住,您必须按以下方式定义控制器

<?php

namespace TuNamespaces\CarpetaControladores;
use DLRoute\Config\Controller;

final class TestController extends Controller {
  
  public function tu_metodo(object $params): object {
    return $params;
  }
}

例如,public function tu_metodo(object $params): object 方法必须返回我们希望显示的输出类型。

如果希望返回 HTML 代码,只需按如下方式定义控制器

<?php

namespace TuNamespaces\CarpetaControladores;
use DLRoute\Config\Controller;

final class TestController extends Controller {
  
  public function tu_metodo(object $params): string {
    return "Tu código HTML"
  }
}

如果您使用的是 DLUnire 框架,可以使用具有两个参数的 view() 函数。第一个参数是视图的路径,第二个参数是在模板 tu-plantilla.template.html 中可以访问的变量。

您可以使用类型定义一个路由,例如

use DLRoute\Requests\DLRoute as Route;
use DLRoute\Test\TestController;

Route::get('/ruta/{parametro}', [TestController::class, 'method'])
  ->filter_by_type([
    "parametro" => "numeric"
  ]);

或者,如果希望接受电子邮件

use DLRoute\Requests\DLRoute as Route;
use DLRoute\Test\TestController;

Route::get('/ruta/{email}', [TestController::class, 'method'])
  ->filter_by_type([
    "email" => "email"
  ]);

请注意,filter_by_type 方法接受一个关联数组作为参数,其中键是参数,值是我们期望的类型。

例如

->filter_by_type([
  "parametro" => "tipo"
]);

或者,通过使用正则表达式

->filter_by_type([
  "parametro" => "/[a-f0-9]+/"
]);

用于捕获从 0f 的字符。

支持的类型

目前支持的类型,您可以不使用正则表达式直接使用它们。

integer, float, numeric, boolean, string, email uuid

通过 callbacks 定义路由

以前,我们曾看到可以这样定义路由

Route::get('/ruta/{parametro}', [TestController::class, 'method']);

也可以通过 回调函数 来定义,例如

Route::get('/ruta/{parametro}', function (object $params) {
  return $params;
});

记住,这里 $params 仅作为示例被返回,但你可以在这里返回任何内容。用户最终看到的是返回的内容。

如果你返回一个数组或对象(例如 $params),返回的输出将会是 JSON 格式。

重要

使用 HTTP GET 方法制作的示例适用于所有其他发送方法。它完全相同。唯一不同的是 DLRoute 类中方法的名称,用来指示发送方法。