Kapitola 11 z 15
Middleware.
PSR-15 middleware řeší společné HTTP podmínky před a po controlleru.
Malá PSR-15 vrstva
Middleware implementuje MiddlewareInterface. Request předá dál přes $handler->handle($request), nebo vrátí vlastní response a pipeline ukončí.
RequireHeaderMiddleware.php
<?php
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Http\Server\MiddlewareInterface;
use Psr\Http\Server\RequestHandlerInterface;
final class RequireHeaderMiddleware implements MiddlewareInterface
{
public function process(
ServerRequestInterface $request,
RequestHandlerInterface $handler,
): ResponseInterface {
return $handler->handle($request);
}
}Závislosti dostane konstruktorem z containeru. Business logiku držte v aplikačních službách.
Připojení k routě
Route middleware přidejte přes ->middleware(ClassName::class). Stejné pravidlo lze připojit celé route group.
Route middleware
<?php
$router
->getNamed(
'account',
'/account',
ControllerAction::for(AccountController::class, 'show'),
)
->middleware(RequireHeaderMiddleware::class);Pořadí registrace určuje pořadí obalení handleru. Globální middleware navíc běží ještě před routingem.