LEMONADE Dokumentace

Dokumentace.

Patnáct kapitol od instalace a struktury projektu po CLI a produkční nasazení.

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.

Podrobná technická dokumentace na GitHubu