asker/rocket-router
Composer 安装命令:
composer require asker/rocket-router
包简介
A fast and flexible PHP router package with attribute-based routing and automatic route generation
README 文档
README
A framework-agnostic PHP library for attribute-based routing. Scans controller classes at build time, generates a cache with zero runtime reflection.
Installation
composer require asker26/rocket-router
Features
- Attribute-based routing using PHP 8+ attributes
- Framework-agnostic — works with WordPress, Laravel, or any PHP framework
- Zero runtime reflection — all scanning happens at build time
- OPcache-friendly — routes are cached as a native PHP file
- Parameter binding via
#[FromRoute],#[FromBody],#[FromQuery]
Usage
1. Define Controllers
<?php use RocketRouter\Attributes\ApiController; use RocketRouter\Attributes\Route; use RocketRouter\Attributes\RouteGet; use RocketRouter\Attributes\RoutePost; use RocketRouter\Attributes\FromRoute; use RocketRouter\Attributes\FromBody; #[ApiController] #[Route('/api/users')] class UserController { #[RouteGet('')] public function index() { return json_encode(['users' => []]); } #[RoutePost('')] public function store(#[FromBody] array $data) { return json_encode(['message' => 'User created']); } #[RouteGet('/{id}')] public function show(#[FromRoute('id')] int $id) { return json_encode(['user' => ['id' => $id]]); } }
2. Generate Route Cache
Run at build/deploy time:
vendor/bin/generate-routes ./app/Controllers ./cache/routes.php
This scans your controllers, resolves all attributes, and writes a cache file. No reflection needed at runtime.
3. Load Routes at Runtime
use RocketRouter\RouteCache; use RocketRouter\RouteCollection; $cache = new RouteCache(__DIR__ . '/cache/routes.php'); $routes = RouteCollection::fromCache($cache); // Iterate routes foreach ($routes as $route) { echo "{$route->method} {$route->route} => {$route->controller}::{$route->action}\n"; }
4. Register with a Framework
Implement RouteRegistrarInterface for your framework, or use the built-in WordPress adapter:
use RocketRouter\RouteCache; use RocketRouter\RouteCollection; use RocketRouter\WordPress\WordPressRouteRegistrar; use RocketRouter\WordPress\WordPressParameterResolver; $cache = new RouteCache(__DIR__ . '/cache/routes.php'); $routes = RouteCollection::fromCache($cache); $registrar = new WordPressRouteRegistrar( namespace: 'my-plugin/v1', serviceLocator: fn(string $class) => $container->get($class), resolver: new WordPressParameterResolver(), ); $registrar->register($routes);
5. Available Attributes
| Attribute | Target | Description |
|---|---|---|
#[ApiController] |
Class | Mark a class as a scannable controller |
#[Route('/path')] |
Class | Define a route prefix |
#[RouteGet('/path')] |
Method | GET route |
#[RoutePost('/path')] |
Method | POST route |
#[RoutePut('/path')] |
Method | PUT route |
#[RouteDelete('/path')] |
Method | DELETE route |
#[FromRoute('name')] |
Parameter | Bind from route path parameter |
#[FromBody] |
Parameter | Bind from request JSON body |
#[FromQuery] |
Parameter | Bind from query string |
Writing a Custom Adapter
Implement RouteRegistrarInterface and ParameterResolverInterface:
use RocketRouter\Contracts\RouteRegistrarInterface; use RocketRouter\Contracts\ParameterResolverInterface; use RocketRouter\RouteCollection; use RocketRouter\RouteItem; class MyFrameworkRegistrar implements RouteRegistrarInterface { public function register(RouteCollection $routes): void { foreach ($routes as $route) { // Register with your framework's router } } } class MyFrameworkResolver implements ParameterResolverInterface { public function resolve(RouteItem $route, mixed $request): array { $args = []; foreach ($route->params as $param) { $args[] = match ($param->source) { 'route' => /* extract from route */, 'body' => /* extract from body */, 'query' => /* extract from query string */, }; } return $args; } }
Requirements
- PHP 8.0 or higher
License
MIT License. See LICENSE file for details.
asker/rocket-router 适用场景与选型建议
asker/rocket-router 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 7 次下载、GitHub Stars 达 1, 最近一次更新时间为 2025 年 09 月 19 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「routing」 「php」 「http」 「rest」 「api」 「router」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 asker/rocket-router 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 asker/rocket-router 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 asker/rocket-router 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
repository php library
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.
http客户端
Easily add Excepct-CT header to your project
Client for Google Directions API to add interpolated points to a route consisting of given coordinates.
统计信息
- 总下载量: 7
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 21
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-09-19