krubio / perfect-router
完美的路由器
v0.1.0
2024-06-02 19:09 UTC
Requires
- krubio/perfect-container: ^1.1
Requires (Dev)
- phpunit/phpunit: ^11
This package is auto-updated.
Last update: 2024-10-02 20:05:45 UTC
README
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许可证。