[■]
codesaur/router
1=[↕]
1:1 ══ composer require codesaur/router
codesaur/router · v6.0.1
Router
Lightweight, fast, object-oriented routing component
[■]
Router
A routing component supporting dynamic parameters, named routes, reverse routing (URL generation) and per-route middleware. Thanks to the RouterInterface contract, third-party routers can be adapted and used inside codesaur/http-application.
Features
- GET / POST / PUT / PATCH / DELETE and compound (POST_PUT, GET_POST) routes
- Typed parameters: {int:id}, {uint:page}, {float:price}, {utf8:query}, {slug}
- Named routes with reverse routing: generate("name", [...])
- pattern("name") -> /news/{id} ready for client-side substitution
- Per-route middleware - chained ->middleware([...]) calls accumulate
- match() returns a stable [callable, params, middleware] 3-tuple
- UTF-8 (Cyrillic, CJK) parameter support
Core classes
| Class | Purpose |
|---|---|
Router | Registers routes, matches requests, generates URLs |
RouterInterface | Full router contract (match, generate, pattern, getRoutes) |
Route | Immutable value object with fluent ->name(), ->middleware() API |
Quick example
use codesaur\Router\Router;
$router = new Router();
// Энгийн GET маршрут / Simple GET route
$router->GET('/hello', function() {
echo 'Hello, World!';
});
// Динамик параметртэй маршрут / Route with dynamic parameters
$router->GET('/news/{int:id}', function(int $id) {
echo "News ID: $id";
})->name('news-view');
// Per-route middleware
$router->POST('/api/users', [UserController::class, 'create'])
->middleware([CsrfMiddleware::class, AuthMiddleware::class])
->name('users.create');
// Маршрут тааруулах / Match route
$result = $router->match('/news/10', 'GET');
if ($result !== null) {
[$callable, $params, $middleware] = $result;
\call_user_func_array($callable, $params);
}
// URL үүсгэх / Generate URL
$url = $router->generate('news-view', ['id' => 10]); // -> /news/10
$pattern = $router->pattern('news-view'); // -> /news/{id}
Running tests
composer test
[■]
Info
Install
composer require codesaur/router
Requirements
- PHP 8.2.1+
- Composer
Documentation