Architektura a správa služeb
Kernel řídí běh aplikace, service providery registrují služby a DI kontejner zajišťuje jejich vytváření a závislosti.
Lemonade poskytuje PSR-7 HTTP runtime, PSR-15 middleware, pojmenované routy, dependency injection, serverové PHP views a konzolové příkazy.
<?php
declare(strict_types=1);
namespace App\Controllers;
use Lemonade\Framework\View\ViewRendererInterface;
use Psr\Http\Message\ResponseInterface;
final readonly class HomeController
{
public function __construct(
private ViewRendererInterface $views,
) {
}
public function index(): ResponseInterface
{
return $this->views->render('home.index');
}
}Základ tvoří HTTP runtime, routing, dependency injection a CLI. Další moduly zajišťují práci s databází, validaci, cache a fronty.
Kernel řídí běh aplikace, service providery registrují služby a DI kontejner zajišťuje jejich vytváření a závislosti.
PSR-7 požadavky a odpovědi, PSR-15 middleware, routing a zpracování controllerů.
Společný model konfigurace a registrace služeb pro webové požadavky i konzolové příkazy.
Databázové adaptéry, transakce, práce se schématem a verzované databázové migrace.
Validace, cache, sessions, nahrávání souborů, lokalizace, události a fronty.
Kernel vytvoří Request scope, spustí PSR-15 middleware, router vybere controller akci a emitter odešle výslednou PSR-7 odpověď.
Do aplikace přichází HTTP požadavek. Lemonade jej reprezentuje jako PSR-7 ServerRequest s metodou, URI, hlavičkami, cookies, soubory a parsovaným tělem.
ServerRequestInterface · ServerRequestFactory · PSR-7Na příkladu jednoduchého API pro články uvidíte, jak v Lemonade spolupracují routing, controllery a dependency injection. Od registrace endpointu přes načtení dat až po výslednou JSON odpověď.
GET /api/articles/42Router přiřadí požadavek controlleru.
Controller načte článek přes službu, která vrací model.
Aplikace vrátí PSR-7 JSON odpověď.
Route zachytí ID článku z URL a předá požadavek controlleru.
<?php
declare(strict_types=1);
use Demo\ArticleApi\Controllers\ArticleController;
use Lemonade\Framework\Routing\ControllerAction;
use Lemonade\Framework\Routing\Router;
return static function (Router $router): void {
$router->get(
'/api/articles/{id}',
ControllerAction::for(ArticleController::class, 'show'),
);
};<?php
declare(strict_types=1);
namespace Demo\ArticleApi\Controllers;
use Demo\ArticleApi\Services\ArticleService;
use Lemonade\Framework\Http\HttpStatus;
use Lemonade\Framework\Http\Response\Responses;
use Psr\Http\Message\ResponseInterface;
final readonly class ArticleController
{
public function __construct(
private ArticleService $articles,
private Responses $responses,
) {
}
public function show(int $id): ResponseInterface
{
$article = $this->articles->find($id);
if ($article === null) {
return $this->responses->json(['error' => 'Article not found'], HttpStatus::NOT_FOUND->value);
}
return $this->responses->json([
'data' => [
'id' => $article->getId(),
'title' => $article->getTitle(),
],
]);
}
}<?php
declare(strict_types=1);
namespace Demo\ArticleApi\Services;
use Demo\ArticleApi\Models\Article;
final class ArticleService
{
public function find(int $id): ?Article
{
if ($id !== 42) {
return null;
}
return new Article(42, 'First article');
}
}<?php
declare(strict_types=1);
namespace Demo\ArticleApi\Models;
final readonly class Article
{
public function __construct(
private int $id,
private string $title,
) {
}
public function getId(): int
{
return $this->id;
}
public function getTitle(): string
{
return $this->title;
}
}{"data":{"id":42,"title":"First article"}}{"error":"Article not found"}Admin Platform poskytuje administrační runtime, CMS Core veřejné CMS routy a další balíčky správu stránek, aktualit a variant obrázků.
Zobrazit balíčky ↗Administrační rozhraní, správa uživatelů a rolí, DataGrid, editory a audit.
02 / CMS routingLemonade CMS CoreVeřejné CMS routování, kanonické URL a společné kontrakty pro obsahové moduly.
03 / Obsah a obrázkyCMS Page · CMS News · Admin ImageSamostatné balíčky pro stránky, aktuality a veřejné URL variant obrázků.
Kapitoly pokrývají routing, controllery, views, DI, konfiguraci, databáze, middleware, lokalizaci, CLI a produkční provoz.