High-performance PHP router with middleware support, route groups, named routes, and advanced optional segment patterns.
- High Performance — Static routes use O(1) hash lookup, pattern caching
- Fluent API — Chainable
->name()and->middleware()methods - Route Groups — Shared prefixes and middleware with nesting
- Middleware — Single and multiple middleware per route/group
- Advanced Patterns — Optional segments anywhere, nested optionals, regex constraints
- Named Routes — Easy route referencing for URL generation
- HEAD Support — Automatic fallback to GET routes per RFC 7231
composer require solophp/routeruse Solo\Router\RouteCollector;
$router = new RouteCollector();
// Simple routes
$router->get('/users', [UserController::class, 'index']);
$router->get('/users/{id}', [UserController::class, 'show']);
// Route with middleware and name
$router->post('/posts', [PostController::class, 'store'])
->middleware(AuthMiddleware::class)
->name('posts.store');
// Route groups
$router->group('/admin', function(RouteCollector $router) {
$router->get('/dashboard', [AdminController::class, 'dashboard']);
$router->get('/users', [AdminController::class, 'users']);
}, [AuthMiddleware::class]);
// Match request
$match = $router->match('GET', '/users/123');
if ($match) {
$handler = $match['handler'];
$params = $match['params']; // ['id' => '123']
$middlewares = $match['middlewares'];
$name = $match['name']; // route name or null
}- Installation
- Quick Start
- Handlers
- Route Parameters
- Optional Segments
- Route Groups
- Middleware
- Named Routes
- API Reference
- PHP 8.1+
MIT License. See LICENSE for details.