# Класс HttpSoft\Runner\ServerRequestRunner

Запускает реализацию Psr\Http\Message\ServerRequestInterface и отправляет клиенту экземпляр Psr\Http\Message\ResponseInterface.

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

use HttpSoft\Runner\ServerRequestRunner;

/**
 * @var HttpSoft\Runner\MiddlewarePipelineInterface $pipeline
 * @var HttpSoft\Emitter\EmitterInterface $emitter
 * @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);

// Создать экземпляр с аргументами

$pipeline->pipe($siteMiddleware);
$pipeline->pipe($userMiddleware, '/user');

$runner = new ServerRequestRunner($pipeline, $emitter);
$runner->run($request, $handler);

// Запуск без обработчика

$pipeline->pipe(new class implements Psr\Http\Server\MiddlewareInterface {
    public function process(
        Psr\Http\Message\ServerRequestInterface $request, 
        Psr\Http\Server\RequestHandlerInterface $handler
    ): Psr\Http\Message\ResponseInterface {
        $response = new HttpSoft\Message\Response();
        $response->getBody()->write('Hello world!');
        return $response;
    }
});
$runner = new ServerRequestRunner($pipeline);
$runner->run($request); // Результат вывода: 'Hello world!'

# Публичные методы

public function __construct(
    HttpSoft\Runner\MiddlewarePipelineInterface $pipeline = null,
    HttpSoft\Emitter\EmitterInterface $emitter = null
);

Если $pipeline не был указан или равняется null, то будет использоваться HttpSoft\Runner\MiddlewarePipeline.

Если $emitter не был указан или равняется null, то будет использоваться HttpSoft\Emitter\SapiEmitter.

# run

Запускает реализацию Psr\Http\Message\ServerRequestInterface и отправляет клиенту экземпляр Psr\Http\Message\ResponseInterface.

public function run(
    Psr\Http\Message\ServerRequestInterface $request, 
    Psr\Http\Server\RequestHandlerInterface $defaultHandler = null
): void;

Если $defaultHandler был указан, то будет вызван метод HttpSoft\Runner\MiddlewarePipelineInterface::process(), в противном случае будет вызван метод HttpSoft\Runner\MiddlewarePipelineInterface::handle().