# PHP пакет для запуска компонентов PSR-7 и PSR-15
Пакет HttpSoft\Runner, отвечающий за запуск компонентов PSR-7 и построение конвейеров посредников PSR-15.
Для этого пакета требуется PHP версии 7.4 или более поздней.
Установка пакета:
composer require httpsoft/http-runner
# API
- HttpSoft\Runner\MiddlewarePipeline — класс, реализующий HttpSoft\Runner\MiddlewarePipelineInterface.
- HttpSoft\Runner\MiddlewareResolver — класс, реализующий HttpSoft\Runner\MiddlewareResolverInterface.
- HttpSoft\Runner\ServerRequestRunner — класс, запускающий реализацию Psr\Http\Message\ServerRequestInterface и отправляющий клиенту экземпляр Psr\Http\Message\ResponseInterface.
Исключения:
- HttpSoft\Runner\Exception\EmptyMiddlewarePipelineException.
- HttpSoft\Runner\Exception\InvalidMiddlewareResolverHandlerException.
# Использование
use HttpSoft\Runner\MiddlewarePipeline;
use HttpSoft\Runner\MiddlewareResolver;
use HttpSoft\Runner\ServerRequestRunner;
use Psr\Http\Message\ResponseInterface;
/**
* @var Psr\Http\Message\ServerRequestInterface $request
* @var Psr\Http\Server\RequestHandlerInterface $handler
* @var Psr\Http\Server\MiddlewareInterface $siteMiddleware
* @var Psr\Http\Server\MiddlewareInterface $userMiddleware
*/
// Базовое использование
$runner = new ServerRequestRunner();
$runner->run($request, $handler);
// Использование `MiddlewarePipeline`
$pipeline = new MiddlewarePipeline();
$pipeline->pipe($siteMiddleware);
$pipeline->pipe($userMiddleware, '/user');
$runner = new ServerRequestRunner($pipeline);
$runner->run($request, $handler);
// Использование `MiddlewareResolver`
$resolver = new MiddlewareResolver();
$handlerMiddleware = $resolver->resolve(function (): ResponseInterface {
$response = new HttpSoft\Message\Response();
$response->getBody()->write('Hello world!');
return $response;
});
$pipeline = new MiddlewarePipeline();
$pipeline->pipe($siteMiddleware);
$pipeline->pipe($userMiddleware, '/user');
$pipeline->pipe($handlerMiddleware);
$runner = new ServerRequestRunner($pipeline);
$runner->run($request); // Результат вывода: 'Hello world!'
Подробное описание использования HttpSoft\Runner\MiddlewarePipeline
смотрите здесь.
Подробное описание использования HttpSoft\Runner\MiddlewareResolver
смотрите здесь.
Подробное описание использования HttpSoft\Runner\ServerRequestRunner
смотрите здесь.