effectra/router

Effectra HTTP 路由包。

v2.1.7 2023-12-12 16:33 UTC

This package is auto-updated.

Last update: 2024-09-04 00:48:02 UTC


README

Effectra PHP 路由器是一个轻量级且灵活的路由库,适用于 PHP 应用程序。它提供了一种方便的方式来定义路由,并将传入的请求分配到适当的控制器或回调。

安装

您可以通过 Composer 安装 Effectra PHP 路由器库。在您的项目目录中运行以下命令:

composer require effectra/router

用法

要开始使用 Effectra PHP 路由器,请按照以下步骤操作

  1. 如果您还没有这样做,请包含自动加载器
require_once 'vendor/autoload.php';
  1. 导入必要的类
use Effectra\Router\Route;
use Effectra\Router\RouteGroup;

use Effectra\Http\Foundation\RequestFoundation;
use Effectra\Http\Message\Response;

use Psr\Http\Message\RequestInterface;
use Psr\Http\Message\ResponseInterface;
  1. 创建 Route 类的一个实例
//pass response class to the router
$response = new Response();

$route = new Route($response);
  1. 使用可用方法定义路由
$route->get('/home', function () {
    return 'Welcome to the home page!';
});

$route->post('/contact', 'StaticController@login');

$router->get('/', [HomeController::class, 'index']);

$router->get('/users/', [UserController::class, 'index']);


$router->post('/signin', function (RequestInterface $request, ResponseInterface $response) {
    return $response->json([
        'message' => 'hello world'
    ]);
});

$route->crud('/report', ReportController::class, 'read|readOne|create|delete|deleteAll|search');

$route->auth('/auth/', AuthController::class);

$route->group('/file/upload/', UploadController::class, function(RouteGroup $router){
    $router->post('audio','createAudio');
    $router->post('video','createVideo');
});
  1. 分配传入的请求
$request = RequestFoundation::createFromGlobals();

$route->dispatch($request);

路由方法

Route 类提供了几种方法来定义路由

  • get($pattern, $callback):定义一个 GET 路由。
  • post($pattern, $callback):定义一个 POST 路由。
  • put($pattern, $callback):定义一个 PUT 路由。
  • delete($pattern, $callback):定义一个 DELETE 路由。
  • patch($pattern, $callback):定义一个 PATCH 路由。
  • options($pattern, $callback):定义一个 OPTIONS 路由。
  • any($pattern, $callback):定义一个匹配任何 HTTP 方法的路由。
  • register($method, $pattern, $callback):定义一个具有特定 HTTP 方法的自定义路由。
  • routes():返回定义的路由数组。

中间件

Route 类支持路由组的中间件。您可以使用 middleware 方法向一组路由添加中间件

$router->get('/users/{id}', [UserController::class, 'show'])->middleware(new AuthMiddleware());

错误处理

Route 类提供了处理 404 未找到和 500 内部服务器错误响应的方法

$route->setNotFound(function () {
    // Handle 404 Not Found response
});

$route->setInternalServerError(function () {
    // Handle 500 Internal Server Error response
});

贡献

欢迎为 Effectra PHP 路由器库做出贡献!如果您遇到任何问题或对改进有建议,请随时打开一个问题或提交一个 pull 请求。

许可

Effectra PHP 路由器库是开源软件,使用 MIT 许可证。