borschphp / router
一个FastRoute路由实现。
Requires
- php: ^8.1
- nikic/fast-route: ^v1.3
- psr/http-message: ^1||^2
- psr/http-server-handler: ^1
- psr/http-server-middleware: ^1
Requires (Dev)
- laminas/laminas-diactoros: ^3
- nikic/php-parser: ^v4.18
- pestphp/pest: ^2.6
This package is auto-updated.
Last update: 2024-09-19 15:50:12 UTC
README
Borsch Router
一个基于nikic/fast-route请求路由器的出色的FastRoute路由实现。
关于项目
一个FastRoute路由实现,灵感来源于优秀的Mezzio路由接口。
该路由器基于nikic/fastroute请求路由器。
您需要提供一个PSR-7 ServerRequestInterface以匹配路由。
路由处理器必须返回一个PSR-7 ResponseInterface。
(返回顶部)
入门指南
先决条件
要使用Borsch\Router,您需要PHP >= 8.1
,但始终建议使用最新稳定的PHP版本。
它还需要PSR-7 HTTP消息的实现。
在测试和以下示例中使用了Laminas Diactoros项目。
安装
通过composer
composer require borschphp/router
(返回顶部)
使用
require_once __DIR__.'/vendor/autoload.php'; $router = new \Borsch\Router\FastRouteRouter(); $router->addRoute(new \Borsch\Router\Route( ['GET'], '/articles/{id:\d+}[/{slug}]', new ArticleHandler(), // Instance of RequestHandlerInterface 'articles.id.title' )); $server_request = \Laminas\Diactoros\ServerRequestFactory::fromGlobals(); // $route_result is an instance of RouteResultInterface $route_result = $router->match($server_request); // $route is an instance of RouteInterface (or false if no match) $route = $route_result->getMatchedRoute(); if (!$route) { return new \Laminas\Diactoros\Response('Not Found', 404); } // $response is an instance of ResponseInterface $response = $route->getHandler()->handle($server_request); // Send the response back to the client or other...
(返回顶部)
测试
此包使用Pest
作为测试框架。
要运行测试
./vendor/bin/pest tests
还使用了突变测试来创建此包,使用Infection
。
有关Infection页面的更多信息。
要运行突变测试,请按文档中的说明安装infection
,然后运行以下命令
XDEBUG_MODE=coverage infection
将在项目文件夹中生成基于文本和HTML的报告。
(返回顶部)
贡献
贡献使开源社区成为一个学习、灵感和创造的地方。您做出的任何贡献都非常欢迎。
如果您有改进此项目的建议,请分支存储库并创建一个pull请求。您也可以简单地创建一个带有“增强”标签的问题。别忘了给项目加星!再次感谢!
- 分支项目
- 创建您的功能分支(
git checkout -b feature/AmazingFeature
) - 提交您的更改(
git commit -m 'Add some AmazingFeature'
) - 推送到分支(
git push origin feature/AmazingFeature
) - 打开Pull Request
(返回顶部)
许可证
在MIT许可证下分发。有关更多信息,请参阅许可证文件。
(返回顶部)
感谢
感谢以下项目为此项目的灵感或因为它们被用于其中
(返回顶部)