krubio/perfect-router

完美的路由器

v0.1.0 2024-06-02 19:09 UTC

This package is auto-updated.

Last update: 2024-10-02 20:05:45 UTC


README

codecov SonarCloud

Coverage Maintainability Rating Code Smells Technical Debt Quality Gate Status Reliability Rating Duplicated Lines (%) Vulnerabilities Bugs Security Rating

PerfectRouter

描述

PerfectRouter 是一个 PHP 路由库,它为您的 Web 应用程序提供了处理 HTTP 请求的简单高效方法。它允许开发者使用属性定义路由,并自动注册控制器及其方法作为路由处理程序。PerfectRouter 与 PerfectContainer 无缝配合,用于管理依赖关系并创建控制器实例。

特性

  • 基于属性的路由:使用 PHP 8 属性直接在控制器方法中定义路由。
  • 自动注册:从指定的目录自动注册控制器及其路由。
  • 动态路由参数:直接从 URL 捕获动态参数。
  • HTTP 方法处理:为特定的 HTTP 方法(GET、POST 等)定义路由。
  • 自定义 404 处理:轻松自定义 404 未找到响应。

安装

使用 Composer 安装 PerfectRouter 库。

composer require krubio/perfect-router

示例

您可以在项目的 examples 目录中找到示例。从 examples 目录运行 composer install 以安装所需的依赖项。

cd examples
composer install

使用方法

以下是一个 PerfectRouter 的基本使用示例

<?php declare(strict_types=1);

require_once './vendor/autoload.php';

use PerfectApp\Container\Container;
use PerfectApp\Logger\FileLogger;
use PerfectApp\Routing\Router;

$logger = new FileLogger('errors.log');

$container = new Container();

$router = new Router($container);
$router->autoRegisterControllers(__DIR__ . '/src/Controllers');

// A user-defined exception handler function
$router->setNotFoundHandler(function ($requestUri, $requestMethod) use ($logger) {
    $logger->error("Route $requestUri with method $requestMethod not found.");
    http_response_code(404);
    echo "Route $requestUri with method $requestMethod not found.";
});

try {
    $router->dispatch($_SERVER['REQUEST_URI'], $_SERVER['REQUEST_METHOD']);
} catch (RuntimeException $e) {
    $logger->error($e->getMessage());
    http_response_code(404);
    echo "Route not found.";
}

贡献

欢迎贡献、问题和功能请求!

许可证

此项目受MIT许可证。