Salt la conținut

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.json

Directoarele pe rând

app/

Aici scrii aproape tot. Namespace-ul rădăcină este App (mapat PSR-4 la app/ în composer.json).

  • App.php este clasa principală a aplicației: extinde Leto\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 un Response sau un string. Vezi Ciclul unui request.
  • Models/ conține modelele ORM (App\Models\...), clase care extind Model. Vezi ORM.
  • Views/ conține template-urile. Un view este căutat în directoarele pe care i le dai la construire (convenția e app_path('Views')), deci un View('posts/show', ...) corespunde fișierului app/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.

Namespace-ul aplicației este 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.