🦖
[■] codesaur/router 1=[↕]
codesaur/router · v6.0.1

Router

Lightweight, fast, object-oriented routing component

Packagist version Downloads PHP version License Aikido Intel 98/100
1:1 ══ composer require codesaur/router
[■] 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

ClassPurpose
RouterRegisters routes, matches requests, generates URLs
RouterInterfaceFull router contract (match, generate, pattern, getRoutes)
RouteImmutable 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
Aikido score 98/100
Checked: 2026-09-10
Links