cloud-castle / http-kernel
HTTP-ядро для PHP 8.1+: матчинг маршрутов, PSR-15 middleware и вызов обработчика поверх cloud-castle/http-router.
Requires
- php: >=8.1
- cloud-castle/command: ^1.5
- cloud-castle/config: ^2.1
- cloud-castle/di: ^1.0
- cloud-castle/error-handler: ^1.3
- cloud-castle/http-router: ^1.0
- cloud-castle/middleware: ^1.0
- cloud-castle/provider: ^1.0
- nyholm/psr7: ^1.8
- psr/container: ^1.1 || ^2.0
- psr/http-factory: ^1.0
- psr/http-message: ^2.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
- psr/log: ^1.0 || ^2.0 || ^3.0
- spiral/roadrunner-http: ^3.5
- spiral/roadrunner-worker: ^3.6
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
- psr/container: Для резолва обработчиков и middleware из DI-контейнера
- spiral/roadrunner-http: Для CloudCastle\Http\Kernel\RoadRunner\Psr7WorkerLoop
- spiral/roadrunner-worker: Для CloudCastle\Http\Kernel\RoadRunner\Psr7WorkerLoop
Provides
None
Conflicts
None
Replaces
None
README
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano
CloudCastle Http Kernel
HTTP-ядро для PHP 8.1+: матчинг через
cloud-castle/http-router, PSR-15 middleware и вызов обработчика.
Установка
composer require cloud-castle/http-kernel
Требуется PHP 8.1+. Зависимости рантайма: cloud-castle/http-router, cloud-castle/middleware, PSR-7/15/11.
Быстрый старт
<?php
use CloudCastle\Http\Kernel\KernelFactory;
use CloudCastle\Http\Router\Router;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
$router = new Router();
$router->get('/hello/{name}', static function (ServerRequestInterface $request): ResponseInterface {
$name = (string) $request->getAttribute('name');
// вернуть свой PSR-7 Response
});
$kernel = KernelFactory::create($router, debug: true);
$response = $kernel->handle($request);
Обработчик маршрута может быть callable, [Class, method], RequestHandlerInterface или id сервиса в PSR-11 контейнере. Глобальные и маршрутные middleware — экземпляры, callable или class-string.
Возможности
- Диспетчеризация PSR-7 запроса через
cloud-castle/http-router - Стек PSR-15 middleware (
cloud-castle/middlewareDispatcher) - Резолв handler/middleware из контейнера
- Атрибуты маршрута и параметров на запросе
- JSON-ответы 404 / 405 (с
Allow) / 500; debug-режим без утечки деталей в prod
Плюсы и минусы
Плюсы: тонкий слой поверх уже готовых router и middleware; DI опционален; ошибки маршрутизации сразу в HTTP-статусы.
Минусы: пакет моложе и менее распространён, чем Symfony HttpKernel / Laminas Stratigility; собственный минимальный JSON-ответ об ошибке без отдельного http-response.
Когда применять
Микрофреймворки и приложения CloudCastle на PSR-7/15, где нужен front controller над http-router без тяжёлого HttpKernel Symfony.
Разработка
composer install
composer check # линтеры + статический анализ + тесты
composer fix # автоисправления (Rector, PHP CS Fixer, PHPCBF)
composer ci # полный CI-пайплайн локально
Полный список команд с описаниями: composer run-script --list.
Документация
- Репозиторий: https://gitverse.ru/cloud-castle/http-kernel
- История изменений: CHANGELOG.md
- Как внести вклад: CONTRIBUTING.md
- Кодекс поведения: CODE_OF_CONDUCT.md
- Политика безопасности: SECURITY.md
Лицензия
MIT © CloudCastle (alex-4-17@yandex.ru)
🇷🇺 Русский · 🇬🇧 English · 🇩🇪 Deutsch · 🇫🇷 Français · 🇪🇸 Español · 🇮🇹 Italiano