echo-fusion/routemanager
Composer 安装命令:
composer require echo-fusion/routemanager
包简介
A lightweight and flexible routing package that helps manage HTTP routes in PHP applications. Supports PSR-7 and PSR-15, designed for MVC architecture with middleware integration.
README 文档
README
A lightweight and flexible routing package that helps manage HTTP routes in PHP applications. It supports PSR-7 and PSR-15 standards and is designed for MVC architecture with middleware integration.
Install
Via Composer
$ composer require echo-fusion/routemanager
Requirements
The following versions of PHP are supported by this version.
- PHP 8.1
- PHP 8.2
- PHP 8.3
Usages
Basic Setup
-
To get started, you can use the RouteMatcher and Router classes directly.
use EchoFusion\RouteManager\RouteMatch; use EchoFusion\RouteManager\Router; $routeMatcher = new RouteMatch(); $router = new Router($routeMatcher);
-
Defining Routes Define routes with optional regex constraints on route parameters. The action parameter can be:
-
An array (e.g., [Controller::class, 'method'])
-
A closure
use Psr\Http\Message\ServerRequestInterface; // Define a simple route $router->post( name: 'api.store', path: '/api', action: [ApiController::class, 'store'] ); // Define a route with parameter constraints $router->get( name: 'blog-show', path: '/post/{id}/detail/{slug}', action: function (int $id, string $slug, ServerRequestInterface $request) { // Your action code here var_dump($id, $slug); }, constraints: [ 'id' => '[0-9]+', 'slug' => '[a-z0-9\-]+', ] );
-
Dispatching and Executing a Route Once routes are defined, dispatch the request and execute the action if a match is found.
try { $routeMatch = $router->dispatch($request); $action = $routeMatch->getRoute()->getAction(); $params = array_merge($routeMatch->getParams(), [$request]); // Execute the action (callable or controller method) return call_user_func_array($action, $params); } catch (EchoFusion\RouteManager\Exceptions\RouteNotFoundException $e) { // Handle route not found } catch (Throwable $exception) { // Handle other errors }
Using Provider
The RouteManagerProvider allows you to integrate Router and RouteMatch instances into a dependency injection container.
-
Register the Provider: Add RouteManagerProvider to your service container.
use EchoFusion\RouteManager\Providers\RouteManagerProvider; use YourApp\Container; $provider = new RouteManagerProvider(); $provider->register($container);
-
Define Routes Using Configuration: Configure routes by calling the boot method, passing an array of routes or a configuration file.
$routes = [ 'home' => [ 'method' => 'GET', 'path' => '/', 'action' => fn () => 'Welcome to the homepage', ], 'blog_show' => [ 'method' => 'GET', 'path' => '/post/{id}/detail/{slug}', 'action' => function (int $id, string $slug, ServerRequestInterface $request) { // Route action code here }, 'constraints' => [ 'id' => '[0-9]+', 'slug' => '[a-z0-9\-]+', ], ], ]; $provider->boot($container, $routes);
If no routes are provided, the boot method defaults to loading routes from routemanager.config.php.
-
Dispatching a Route: With the routes registered, retrieve the RouterInterface from the container and dispatch it with a request object.
use EchoFusion\Contracts\RouteManager\RouterInterface; use EchoFusion\RouteManager\Exceptions\RouteNotFoundException; try { $router = $container->get(RouterInterface::class); $routeMatch = $router->dispatch($request); } catch (RouteNotFoundException $e) { // Handle route not found } catch (Throwable $exception) { // Handle other errors }
Testing
Testing includes PHPUnit and PHPStan (Level 7).
$ composer test
Credits
Developed and maintained by Amir Shadanfar.
Connect on LinkedIn.
License
The MIT License (MIT). Please see License File for more information.
echo-fusion/routemanager 适用场景与选型建议
echo-fusion/routemanager 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 9 次下载、GitHub Stars 达 1, 最近一次更新时间为 2024 年 10 月 01 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「routing」 「php」 「mvc」 「middleware」 「psr-7」 「psr-15」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 echo-fusion/routemanager 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 echo-fusion/routemanager 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 echo-fusion/routemanager 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Kinikit - PHP Application development framework MVC component
Write down your routing mapping at one place
Flight routing is a simple, fast PHP router that is easy to get integrated with other routers.
Client for Google Directions API to add interpolated points to a route consisting of given coordinates.
Alfabank REST API integration
A router designed for web requests for the Monolith framework
统计信息
- 总下载量: 9
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 29
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2024-10-01