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

Router

Хөнгөн, хурдан, объект-суурьтай маршрутчиллын (routing) компонент

Packagist version Downloads PHP version License Aikido Intel 99/100
1:1 ══ composer require codesaur/router
[] Router

Динамик параметрүүд, нэртэй маршрутууд, reverse routing (URL үүсгэх), per-route middleware зэрэг бүх шаардлагатай боломжуудыг дэмждэг routing компонент. RouterInterface contract-ийн ачаар гуравдагч router-уудыг adapter-аар ороож codesaur/http-application дотор ашиглах боломжтой.

Онцлогууд
  • GET / POST / PUT / PATCH / DELETE болон нийлмэл (POST_PUT, GET_POST) маршрут
  • Төрөлтэй параметр: {int:id}, {uint:page}, {float:price}, {utf8:query}, {slug}
  • Нэртэй маршрут, reverse routing: generate("name", [...])
  • Client-side орлуулалтад бэлэн pattern("name") -> /news/{id}
  • Per-route middleware - ->middleware([...]) chain хуримтлагдана
  • match() нь тогтмол [callable, params, middleware] 3-tuple буцаана
  • UTF-8 (кирилл, CJK) параметрийн дэмжлэг

Үндсэн классууд

КлассҮүрэг
RouterМаршрут бүртгэх, тааруулах, URL үүсгэх үндсэн класс
RouterInterfaceRouter-ийн бүрэн contract (match, generate, pattern, getRoutes)
RouteImmutable value object - fluent ->name(), ->middleware() API

Жишээ код

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}

Тест ажиллуулах

composer test
[] Info
Суулгах
composer require codesaur/router
Шаардлага
  • PHP 8.2.1+
  • Composer
Aikido оноо 99/100
Шалгасан: 2026-09-04
Холбоосууд