Načtení konfigurace
ConfigLoader načte manifestem vybrané definice pro HTTP nebo CLI a uloží je do typovaného registru.
Lemonade používá společný systém konfigurace, service providerů a dependency injection. HTTP požadavky, konzolové příkazy a úlohy ve frontě zpracovává v oddělených runtime kontextech.
Bootstrap připraví kořenový container pro daný entrypoint: načte typovanou konfiguraci, sestaví plán providerů a dokončí potřebné registry. Nejde ještě o zpracování konkrétního požadavku.
ConfigLoader načte manifestem vybrané definice pro HTTP nebo CLI a uloží je do typovaného registru.
ApplicationBootstrapper doplní cesty, prostředí a debug režim z aktuálního ApplicationContext.
Vznikne společný plán core, entrypoint, frameworkových a aplikačních providerů v pořadí jejich závislostí.
Metody register() deklarují bindingy, aliasy, lifetimes a tagy. V této fázi se služby ještě nepoužívají.
Container uzavře plán definic a teprve potom spustí boot() providerů pro práci s hotovým runtime containerem.
Routing.php a tagované registrary sestaví a zmrazí tabulku rout. Výběr konkrétní routy probíhá až při HTTP dispatch.
HTTP požadavky, konzolové příkazy a úlohy ve frontě používají služby registrované v aplikaci. Každý typ spuštění má vlastní scope, který odděluje stav konkrétního požadavku, příkazu nebo úlohy.
Provider deklaruje definice během bootstrapu. Runtime služby je následně získávají přes DI container.
<?php
namespace App\Providers;
use App\Services\InvoiceImportRegistry;
use Lemonade\Framework\Container\ContainerBuilderInterface;
use Lemonade\Framework\Core\ServiceProviderInterface;
final class AppServiceProvider implements ServiceProviderInterface
{
public function register(ContainerBuilderInterface $builder): void
{
$builder->singleton(
InvoiceImportRegistry::class,
InvoiceImportRegistry::class,
);
}
}Běžný požadavek prochází globální PSR-15 pipeline, routováním a zvoleným controllerem. Výsledná odpověď se vrací přes middleware pipeline a kernel ji následně emituje.
Kernel předá scope-bound PSR-7 ServerRequest do globální middleware pipeline.
Globální PSR-15 middleware obalí dispatch a mohou vrátit odpověď ještě před routingem.
Router podle HTTP metody a cesty vybere routu a vytvoří neměnný RouteMatch.
Route middleware obalí vybraný handler; resolver sestaví controller a předá argumenty akce.
Výsledek akce se normalizuje na PSR-7 odpověď a ResponseEmitter odešle status, hlavičky a tělo.
HTTP metody a cesty jsou mapované na konkrétní controller akce.
Container rozlišuje singleton, transient a scoped služby. Request, Command a Job používají vlastní izolované scopes.
Framework poskytuje infrastrukturu a integrační kontrakty. Aplikace určuje doménovou logiku, strukturu obsahu a konkrétní integrace.