Search by

cloud-castle / http-router

alex-4-17

Быстрый HTTP-маршрутизатор для PHP 8.1+: именованные маршруты, группы, домены, ограничения параметров, кэш и генерация URL поверх PSR-7.

v1.0.0 2026-11-06 10:31 UTC

This package is auto-updated.

Last update: 2026-11-06 10:38:01 UTC


README

🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano

CloudCastle Http Router

CloudCastle Http Router

Packagist Version Downloads PHP Version License

Быстрый HTTP-маршрутизатор для PHP 8.1+: именованные маршруты, группы, домены, ограничения параметров, кэш и генерация URL поверх PSR-7.

Установка

composer require cloud-castle/http-router

Требуется PHP 8.1+. Зависимость рантайма — только psr/http-message.

Быстрый старт

<?php

use CloudCastle\Http\Router\RequestDecorator;
use CloudCastle\Http\Router\Router;
use Psr\Http\Message\ServerRequestInterface;

$router = new Router();
$router->get('/users/{id}', 'UserController@show')
    ->name('users.show')
    ->where('id', '\d+');

$router->group(['prefix' => '/api', 'name' => 'api.', 'middleware' => ['auth']], static function (Router $router): void {
    $router->post('/items', 'ItemController@store')->name('items.store');
});

$matched = $router->match($request);
$url = $router->generate('users.show', ['id' => 42]); // /users/42

/** @var ServerRequestInterface $decorated */
$decorated = (new RequestDecorator())->decorate($request, $matched);

Возможности

  • Методы get / post / put / patch / delete / options / head / any / map
  • Параметры пути {id}, опциональные {id?}, inline-ограничения {id:\d+} и where()
  • Именованные маршруты и генерация URL
  • Группы: prefix, name, middleware, domain
  • Авто-HEAD для GET, 405 с списком Allow, fallback
  • PHP-кэш маршрутов (cache / fromCache) для class-based handlers
  • Обогащение PSR-7 ServerRequest атрибутами маршрута

Плюсы и минусы

Плюсы: суперсет типичных возможностей FastRoute/AltoRouter/League Route в одном API; нулевые тяжёлые зависимости; кэш и домены из коробки.

Минусы: пакет моложе и менее распространён, чем nikic/fast-route и symfony/routing; для замыканий в handler/middleware кэш не сериализуется — в проде используйте [Class, method] или строковые id.

Когда применять

HTTP-приложения и микрофреймворки на PSR-7, где нужен лёгкий роутер с группами, доменами и генерацией URL без Symfony Routing целиком.

Разработка

composer install
composer check    # линтеры + статический анализ + тесты
composer fix      # автоисправления (Rector, PHP CS Fixer, PHPCBF)
composer ci       # полный CI-пайплайн локально

Полный список команд с описаниями: composer run-script --list.

Документация

Лицензия

MIT © CloudCastle (alex-4-17@yandex.ru)

🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano