mithridatem/router
Composer 安装命令:
composer require mithridatem/router
包简介
Lightweight PHP routing library with configurable authorization and controller resolution.
README 文档
README
Mithridatem Router est une bibliotheque PHP oriente PSR-4 qui fournit un mecanisme de routage HTTP minimaliste, testable et independant de tout framework.
Caracteristiques clefs
- API fluide pour declarer des routes GET, POST ou multi-methodes avec segments dynamiques
{id}et wildcards/*. - Resolution de controlleurs parametres via references (
Route::controller) compatible avec un conteneur de dependances. - Controle d'acces branchable grace a l'interface
GrantCheckerInterface(implementations par defautAllowAllGrantChecker,ArrayGrantChecker). - Contexte de requete abstrait (
RequestContextInterface) pour isoler les superglobales PHP et faciliter les tests. - Base path configurable (
Router::setBasePath) pour les applications hebergees derriere un prefixe. - Exceptions explicites (
RouteNotFoundException,UnauthorizedException,RouterException) pour une gestion d'erreur claire.
Installation
composer require mithridatem/router
En developpement local sur ce depot, pensez a executer composer dump-autoload apres toute modification de namespace.
Premiers pas
<?php require __DIR__ . '/vendor/autoload.php'; use Mithridatem\Routing\Route; use Mithridatem\Routing\Router; $router = new Router(); // Route simple $router->map(Route::get('/', fn () => 'Hello world')); // Route avec parametre dynamique $router->map(Route::get('/books/{id}', function (string $id) { return "Livre #$id"; })); echo $router->dispatch();
Par defaut dispatch() detecte la requete courante via NativeRequestContext::fromGlobals(). Pour des tests unitaires, injectez votre propre contexte :
use Mithridatem\Routing\Context\RequestContextInterface; final class FakeContext implements RequestContextInterface { public function __construct(private string $path, private string $method) {} public function getPath(): string { return $this->path; } public function getMethod(): string { return $this->method; } public function getBearerToken(): ?string { return null; } } $router->dispatch(new FakeContext('/books/42', 'GET'));
Controlleurs et resolution
Lorsque vos handlers resident dans des classes, utilisez Route::controller() et laissez le routeur resoudre la methode correspondante :
$router->mapController( 'GET', '/admin/dashboard', App\Controller\AdminController::class, 'dashboard' );
Par defaut, DefaultControllerResolver instancie la classe sans dependances. Pour deleguer la resolution a un conteneur, fournissez votre propre implementation de ControllerResolverInterface :
$router->setControllerResolver(new ContainerAwareResolver($container));
Gestion des autorisations
Associez des droits a une route en fournissant un tableau de "grants" :
use Mithridatem\Routing\Auth\ArrayGrantChecker; $router->setGrantChecker(new ArrayGrantChecker(['ROLE_ADMIN'])); $router->map(Route::get('/admin', fn () => 'Admin panel', ['ROLE_ADMIN']));
Si l'utilisateur courant ne possede aucun des droits requis, une UnauthorizedException est levee. Branchez votre propre verificateur via GrantCheckerInterface pour relier vos mecanismes d'authentification.
Base path et sous-repertoires
Hebergez votre application derriere un prefixe sans re-ecrire vos routes :
$router->setBasePath('/mon-app');
Toutes les correspondances s'effectuent alors relativement a ce prefixe.
Gestion des erreurs
- Route introuvable :
RouteNotFoundException. - Acces refuse :
UnauthorizedException. - Erreur de resolution :
RouterException.
Capturez ces exceptions et adaptez la reponse HTTP de votre application.
Tests et exemples
composer install
composer test
Un exemple minimal est disponible dans examples/basic.php. Des doubles de tests se trouvent dans tests/Support pour simuler le contexte HTTP et les controlleurs.
Aller plus loin
- Documentation d'architecture :
docs/architecture.md. - Guide de migration :
docs/migration.md. - Processus de contribution :
CONTRIBUTING.mdetSECURITY.md.
mithridatem/router 适用场景与选型建议
mithridatem/router 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 234 次下载、GitHub Stars 达 11, 最近一次更新时间为 2025 年 10 月 04 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「routing」 「http」 「router」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 mithridatem/router 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 mithridatem/router 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 mithridatem/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.
Router
PMVC App Action Router
Database alias router extension for Nette Framework
统计信息
- 总下载量: 234
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 12
- 点击次数: 8
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-10-04