# Класс HttpSoft\Runner\ServerRequestRunner
Запускает реализацию Psr\Http\Message\ServerRequestInterface и отправляет клиенту экземпляр Psr\Http\Message\ResponseInterface.
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()
.