# PHP пакет для запуска компонентов PSR-7 и PSR-15

Пакет HttpSoft\Runner, отвечающий за запуск компонентов PSR-7 и построение конвейеров посредников PSR-15.

Для этого пакета требуется PHP версии 7.4 или более поздней.

Установка пакета:

composer require httpsoft/http-runner

Исходный код на GitHub.

# API

Исключения:

# Использование

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 смотрите здесь.