logifire / nano-router
Router implementation using PSR-7
5.0.0
2025-05-26 17:53 UTC
Requires
- php: >=8.4
- psr/container: ^1.0.0 | ^2.0.1
- psr/http-message: ^1.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- baryshev/tree-route: ^2.0
- logifire/nano-container: ^2.0.3
- logifire/nano-middleware: ^0.3.0
- nyholm/psr7: ^1.6
- phpunit/phpunit: ^10.0
Suggests
- logifire/nano-container: A PSR-11 container implementation, required for the middleware implementation.
- logifire/nano-middleware: A PSR-15 middleware implementation.
This package is auto-updated.
Last update: 2025-05-26 18:20:22 UTC
README
Usage
Basic
// Controller implementation
class StringController implements Controller {
public function run(): ResponseInterface {
...
}
}
...
// Router configuration
$router = new Router();
$router->configurePath(Router::METHOD_GET, '/profiles/(?<uuid>[0-9a-f\-]{36})', StringController::class);
$router->configurePath(Router::METHOD_GET, '/profiles/(?<id>\d+)', IntegerController::class);
...
// Request handling
$router_result = $router->processRequest($server_request);
if ($router_result !== null) {
$controller_name = $router_result->getControllerName();
$path_result = $router_result->getPathResult();
$query_result = $router_result->getQueryResult();
$controller = new $controller_name({dependencies});
$psr7_response = $controller->buildResponse();
}
...
This package comes with PSR-15 RouterMiddleware