Structura directoarelor
O aplicație Leto nouă (creată cu composer create-project) vine cu o structură predefinită. Nu trebuie să o memorezi, dar merită să știi unde stă fiecare lucru, mai ales pentru că tot restul documentației presupune aceste locații (de exemplu, view-urile în app/Views/, configul în config/).
Privire de ansamblu
numele-proiectului/
├── app/ # Codul aplicației tale
│ ├── App.php # Clasa principală (extinde Application), înregistrează rutele
│ ├── Controllers/ # Controllerele
│ ├── Models/ # Modelele ORM
│ └── Views/ # Template-urile (.php / .twig)
├── config/ # Fișiere de configurare
│ ├── app.php
│ ├── cors.php
│ └── database.php
├── docker/ # Configurație Docker (dev + prod)
├── public/ # Document root-ul serverului web
│ ├── index.php # Punctul de intrare al tuturor request-urilor
│ ├── .htaccess
│ └── robots.txt
├── resources/ # Resurse statice (assets, fișiere sursă)
├── storage/ # Fișiere generate la runtime (log-uri, erori)
├── system/ # Biblioteca de sistem a platformei
├── docker-compose.dev.yml
└── composer.jsonDirectoarele pe rând
app/
Aici scrii aproape tot. Namespace-ul rădăcină este App (mapat PSR-4 la app/ în composer.json).
App.phpeste clasa principală a aplicației: extindeLeto\AppBuilder\Applicationși e locul unde înregistrezi rutele. Vezi Aplicația și Rutare.Controllers/conține controllerele (App\Controllers\...). Un controller primește request-ul și întoarce unResponsesau un string. Vezi Ciclul unui request.Models/conține modelele ORM (App\Models\...), clase care extindModel. Vezi ORM.Views/conține template-urile. Un view este căutat în directoarele pe care i le dai la construire (convenția eapp_path('Views')), deci unView('posts/show', ...)corespunde fișieruluiapp/Views/posts/show.php. Vezi Views.
config/
Fiecare fișier .php întoarce un array de configurare și devine accesibil prin config('nume_fisier.cheie'). De exemplu, config/database.php se citește cu config('database.connections.default'). Vezi Aplicația.
public/
Singurul director expus de serverul web. public/index.php este punctul de intrare: pornește aplicația (Leto\Base::getInstance()) și rulează contextul. Nu pune niciodată cod sau fișiere sensibile în afara lui public/ la un loc accesibil din browser.
storage/
Fișiere generate la runtime: log-uri și erori (de exemplu, excepțiile neprinse ajung în storage/errors). Este scriibil de către server.
resources/ și system/
resources/ ține resurse statice (assets, fișiere sursă înainte de build). system/ este biblioteca de sistem a platformei; în mod normal nu o modifici.
App, deci app/Controllers/HelloController.php este App\Controllers\HelloController. Când scrii class App extends Application, adaugă use Leto\AppBuilder\Application; ca să eviți confuzia de namespace.