LEMONADE Dokumentace

Dokumentace.

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

Kapitola 5 z 15

Controllery a HTTP responses.

Controller koordinuje jeden HTTP use case a své závislosti dostává konstruktorem.

Plain final controller

Nové controllery jsou běžné final třídy. Framework je vytváří v Request scope, takže mohou bezpečně injektovat requestově scoped služby. Public ponechte jen metody určené pro dispatch.

app/Controllers/ArticleController.php
<?php

use Lemonade\Framework\View\ViewRendererInterface;
use Psr\Http\Message\ResponseInterface;

final readonly class ArticleController
{
    public function __construct(private ViewRendererInterface $views) {}

    public function detail(string $id): ResponseInterface
    {
        return $this->views->render('articles.detail', ['id' => $id]);
    }
}

ViewRendererInterface::render() vrací HTML PSR response. Parametry routy lze přijmout přímo jako argumenty action metody.

Typy odpovědí

Pro HTML view použijte ViewRendererInterface. Pro JSON, text, redirect, download nebo stream injektujte Responses.

Responses
<?php

use Lemonade\Framework\Http\Response\Responses;
use Psr\Http\Message\ResponseInterface;

final readonly class HealthController
{
    public function __construct(private Responses $responses) {}

    public function show(): ResponseInterface
    {
        return $this->responses->json(['status' => 'ok']);
    }
}

Responses::json() používá bezpečné JSON kódování a umožňuje zadat HTTP status, například 201 nebo 422.

Podrobná technická dokumentace na GitHubu