Capitol gratuit

Structura unui proiect Laravel

De la Laravel 11 încoace, structura de directoare a fost simplificată semnificativ față de versiunile anterioare (10 și mai vechi). Fișierele app/Http/Kern...

Introducere

De la Laravel 11 încoace, structura de directoare a fost simplificată semnificativ față de versiunile anterioare (10 și mai vechi). Fișierele app/Http/Kernel.php și app/Console/Kernel.php au dispărut - configurarea lor s-a mutat în bootstrap/app.php.

Arborele principal de directoare

DirectorConține
app/Codul aplicației: Models, Http/Controllers, Http/Middleware, Providers
bootstrap/app.php - configurarea centrală a aplicației; cache/ - fișiere de cache generate
config/Fișiere de configurare (app, database, mail, queue, filesystems etc.)
database/migrations/, seeders/, factories/
public/Punctul de intrare web (index.php), assets compilate
resources/Fișiere Blade (views/), CSS, JS necompilate, fișiere de traducere
routes/web.php, api.php, console.php, channels.php
storage/Loguri, cache, sesiuni, fișiere încărcate de utilizatori
tests/Teste automate (Feature și Unit)
vendor/Pachete Composer instalate (nu se urcă în Git)

Directorul app/ în detaliu

app/
├── Console/
│   └── Commands/         # Comenzi Artisan personalizate
├── Http/
│   ├── Controllers/      # Controllere
│   ├── Middleware/       # Middleware personalizat
│   └── Requests/         # Form Request-uri (validare)
├── Models/                # Modele Eloquent
├── Providers/             # Service Provider-i
└── Policies/               # Policies pentru autorizare

bootstrap/app.php - inima configurării

Acesta este locul unde se înregistrează rutele, middleware-ul global și gestionarea excepțiilor, într-un singur fișier centralizat:

<?php

use Illuminate\Foundation\Application;
use Illuminate\Foundation\Configuration\Exceptions;
use Illuminate\Foundation\Configuration\Middleware;

return Application::configure(basePath: dirname(__DIR__))
->withRouting(
web: __DIR__.'/../routes/web.php',
commands: __DIR__.'/../routes/console.php',
health: '/up',
)
->withMiddleware(function (Middleware $middleware) {
$middleware->alias([
'admin' => \App\Http\Middleware\EnsureUserIsAdmin::class,
]);
})
->withExceptions(function (Exceptions $exceptions) {
//
})->create();

Directorul routes/

FișierRol
web.phpRute pentru browser, cu sesiune, CSRF și cookie-uri
api.phpRute stateless pentru API - nu există implicit, se adaugă cu php artisan install:api
console.phpComenzi Artisan definite ca funcții și programarea lor (scheduling)
channels.phpCanale de broadcast (WebSockets)

Artisan - unealta de linie de comandă

Fiecare proiect Laravel vine cu artisan, un script PHP care oferă zeci de comenzi utile:

# Listează toate comenzile disponibile
php artisan list

# Deschide o consolă interactivă (REPL) cu aplicația încărcată
php artisan tinker

# Generatoare de cod (make:*)
php artisan make:model Articol -mfc
php artisan make:controller ArticolController
php artisan make:middleware VerificaAbonament

# Curăță și regenerează cache-uri
php artisan optimize:clear
Sfat: flagul -mfc pe make:model generează simultan modelul, migrația (-m) și controllerul (-c). Adăugați și -R pentru un controller de tip resource complet.

storage/ și legătura simbolică publică

Fișierele încărcate de utilizatori (poze, documente) se salvează implicit în storage/app/public, care nu este accesibil direct din browser. Pentru a-l face public, se creează o legătură simbolică:

php artisan storage:link

Aceasta creează public/storage ca link către storage/app/public, astfel încât fișierele să fie accesibile la https://domeniul-dvs.ro/storage/....

Continuați cu restul cursului

Acesta este capitolul 3 din cele 14 ale cursului, cu 7 lecții din 91. Cumpărați cursul și parcurgeți tot conținutul în cont, cu progres salvat, test final și certificat.

Cumpărați cursul la 130 €