cloud-castle / http-router
Быстрый HTTP-маршрутизатор для PHP 8.1+: именованные маршруты, группы, домены, ограничения параметров, кэш и генерация URL поверх PSR-7.
Requires
- php: >=8.1
- psr/http-message: ^2.0
Requires (Dev)
- deptrac/deptrac: ^3.0 || ^4.0
- ergebnis/composer-normalize: ^2.45
- friendsofphp/php-cs-fixer: ^3.75
- icanhazstring/composer-unused: ^0.9
- infection/infection: ^0.29 || ^0.33
- php-parallel-lint/php-parallel-lint: ^1.4
- phpmd/phpmd: ^2.15
- phpstan/extension-installer: ^1.4
- phpstan/phpstan: ^1.12 || ^2.1
- phpstan/phpstan-deprecation-rules: ^1.2 || ^2.0
- phpstan/phpstan-phpunit: ^1.4 || ^2.0
- phpstan/phpstan-strict-rules: ^1.6 || ^2.0
- phpunit/phpunit: ^10.5 || ^11.5
- psalm/plugin-phpunit: ^0.19 || ^0.20
- rector/rector: ^1.2 || ^2.0
- roave/security-advisories: dev-latest
- squizlabs/php_codesniffer: ^3.12 || ^4.0
- vimeo/psalm: ^6.0
- webmozart/assert: ^1.11
Suggests
None
Provides
None
Conflicts
None
Replaces
None
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
Быстрый 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.
Документация
- Репозиторий: https://gitverse.ru/cloud-castle/http-router
- История изменений: CHANGELOG.md
- Как внести вклад: CONTRIBUTING.md
- Кодекс поведения: CODE_OF_CONDUCT.md
- Политика безопасности: SECURITY.md
Лицензия
MIT © CloudCastle (alex-4-17@yandex.ru)
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano