Salt la conținut

Aplicația

Orice aplicație Leto pornește din clasa Leto\Base. Ea este un singleton — o singură instanță per request — și se ocupă de inițializare, configurare și execuție.

Inițializare

În public/index.php, punctul de intrare al aplicației, vei găsi ceva de genul:

$app = Base::getInstance(__DIR__);
$app->loadConfig();
$app->loadRoutes();
$app->run();

Pe măsură ce se inițializează, Base pune la dispoziție:

  • un hive — un key-value store accesibil cu dot notation, unde poți stoca orice date pe durata request-ului
  • obiectele Request și Response curente
  • logging prin Monolog, configurat automat
  • Whoops pentru afișarea prietenoasă a erorilor în development

Contexte de execuție

Metoda run() a lui Base delegă execuția către un context. Contextul este cel care decide cum se încarcă rutele și modulele aplicației.

ContextCând se folosește
SingleAppContextO singură aplicație, fără module separate. Încarcă \App\App::routes().
MultipleAppsContextMai multe module independente. Scanează app/*/ și încarcă \Apps\{nume}\App::routes() pentru fiecare modul găsit.
MultipleAppsApiContextLa fel ca MultipleAppsContext, dar pentru rute cu prefix /api/. Apelează api() în loc de routes().
ResourceContextServește fișiere statice (imagini, CSS, JS) cu headere de cache și CORS.
CronContextPentru job-uri programate — returnează un răspuns gol, fără output HTML.
FileAppContextStub pentru aplicații bazate pe fișiere. Momentan run() și sendResponse() sunt goale.

Configurare

Configurările se încarcă din fișiere PHP, nu din YAML sau JSON. Base le expune prin hive:

$dbConfig = Base::getInstance()->config('database');

Aceasta returnează conținutul fișierului config/database.php. Cheia 'database' este numele fișierului fără extensie.