Laravel — Fondamenti per chi parte da zero

Routing · Controller · Blade · Struttura progetto · Artisan CLI · Laravel 11 · Marco Consiglio
Volta Institute · Napoli
A.A. 2026
🗺️ Cos'è Laravel — un framework che organizza il PHP per te
Nelle guide PHP+MySQL già viste (progetti CMS, CRM, ecc.), ogni file .php gestiva manualmente la connessione al database, la logica e l'HTML tutto insieme. Laravel è un framework: un insieme di regole e strumenti già pronti che organizzano il codice PHP in modo strutturato, separando "cosa succede quando arriva una richiesta" (routing), "la logica dell'applicazione" (controller) e "cosa viene mostrato" (viste Blade).
Il vantaggio principale per un principiante: invece di scrivere da zero connessione database, gestione errori, sicurezza dei form, Laravel fornisce tutto questo già pronto e testato — si impara a USARE questi strumenti invece di ricostruirli ogni volta.
🎯 Da dove si parte: per seguire questa guida serve conoscere PHP di base (variabili, funzioni, array — vedi le guide PHP Basi/Funzioni/Array) e avere un ambiente con PHP 8.2+ e Composer installati. Non serve conoscenza pregressa di framework.
⚙️ Creare il primo progetto Laravel
# Composer è il gestore di pacchetti PHP (equivalente di npm per Node.js): # scarica Laravel e tutte le sue dipendenze automaticamente composer create-project laravel/laravel nome-progetto # entra nella cartella creata cd nome-progetto # avvia un server di sviluppo locale (nessun Apache/Nginx richiesto per provare) php artisan serve
💡 php artisan serve avvia un server temporaneo su http://localhost:8000 — sufficiente per sviluppo e apprendimento, ma NON adatto alla produzione (dove servirebbe un vero web server come Apache o Nginx).
⚠️ Se digitando composer nel terminale ricevi "comando non trovato", significa che Composer non è installato sul computer — va scaricato separatamente da getcomposer.org prima di poter creare un progetto Laravel.
📁 Struttura delle cartelle — dove si trova cosa
nome-progetto/ ├── app/ │ ├── Http/Controllers/ // la logica dell'applicazione (Passo 5) │ └── Models/ // rappresentano le tabelle del database (guida Laravel Database) ├── routes/ │ └── web.php // definisce quali URL esistono (Passo 4) ├── resources/ │ └── views/ // i file Blade, cioè l'HTML (Passo 6) ├── public/ // unica cartella accessibile direttamente dal browser ├── .env // configurazione (credenziali database, ecc.) └── artisan // il comando CLI di Laravel (Passo 7)
💡 A differenza dei progetti PHP "puri" già visti (dove ogni file .php nella cartella principale era direttamente accessibile via URL), in Laravel SOLO la cartella public/ è raggiungibile dal browser — tutto il resto del codice (controller, modelli, configurazione) resta protetto e non accessibile direttamente per motivi di sicurezza.
🛣️ Routing — collegare un URL a una risposta
Un "percorso" (route) dice a Laravel: "quando qualcuno visita QUESTO indirizzo, esegui QUESTO codice".
// routes/web.php Route::get('/', function () { return 'Ciao, questa è la homepage!'; }); Route::get('/chi-siamo', function () { return 'Questa è la pagina Chi Siamo.'; });
💡 Route::get('/chi-siamo', ...) significa: "quando il browser richiede /chi-siamo con il metodo GET, esegui questa funzione" — GET è lo stesso metodo HTTP già visto nella guida PHP Form/Superglobali per le richieste che recuperano una pagina (a differenza di POST, usato per inviare dati).
✅ Checkpoint: apri http://localhost:8000/chi-siamo nel browser (con php artisan serve attivo) — dovresti vedere il testo restituito dalla funzione.
🎮 Controller — spostare la logica fuori dalle rotte
Scrivere tutta la logica direttamente in web.php (come al Passo 4) diventa disordinato quando l'applicazione cresce. Un controller è una classe PHP dedicata a gestire la logica di una o più rotte, mantenendo web.php pulito e leggibile.
# Artisan genera automaticamente lo scheletro del file controller php artisan make:controller PaginaController
// app/Http/Controllers/PaginaController.php namespace App\Http\Controllers; class PaginaController extends Controller { public function chiSiamo() { return 'Questa è la pagina Chi Siamo, gestita da un controller.'; } }
// routes/web.php — ora la rotta punta al metodo del controller, non a una funzione inline use App\Http\Controllers\PaginaController; Route::get('/chi-siamo', [PaginaController::class, 'chiSiamo']);
💡 [PaginaController::class, 'chiSiamo'] dice a Laravel: "crea un'istanza di PaginaController e chiama il suo metodo chiSiamo()" — è concettualmente identico a chiamare una funzione PHP, ma organizzato dentro una classe dedicata, coerente con l'approccio OOP già visto nella guida PHP OOP.
🖼️ Blade — il motore di template per l'HTML
Finora i controller restituivano semplice testo. Nella pratica, si vuole restituire HTML completo — Blade è il sistema di template di Laravel, con una sintassi speciale per inserire dati PHP dentro l'HTML in modo pulito.
<!-- resources/views/chi-siamo.blade.php --> <!DOCTYPE html> <html> <body> <h1>{{ $titolo }}</h1> <p>Benvenuto, {{ $nome }}!</p> </body> </html>
// PaginaController.php — passiamo dati alla vista Blade public function chiSiamo() { return view('chi-siamo', [ 'titolo' => 'Chi Siamo', 'nome' => 'Studente' ]); }
⚠️ {{ $titolo }} in Blade applica AUTOMATICAMENTE l'escape dei caratteri HTML (equivalente a htmlspecialchars() già visto nelle guide PHP) — una protezione automatica contro attacchi XSS, senza doverla scrivere manualmente ogni volta come nel PHP "puro".
✅ Checkpoint: view('chi-siamo', [...]) cerca automaticamente il file resources/views/chi-siamo.blade.php — il nome passato a view() corrisponde al nome del file, senza l'estensione .blade.php.
🔧 Artisan CLI — lo strumento da riga di comando di Laravel
artisan è lo script CLI incluso in ogni progetto Laravel, usato per generare codice, eseguire migration (guida Laravel Database), e molto altro — evita di scrivere manualmente file ripetitivi.
ComandoCosa fa
php artisan serveAvvia il server di sviluppo locale
php artisan make:controller NomeControllerGenera un nuovo file controller
php artisan make:model NomeModelloGenera un nuovo modello (guida Laravel Database)
php artisan route:listMostra tutte le rotte definite nel progetto
php artisan --versionMostra la versione di Laravel installata
💡 php artisan route:list è particolarmente utile per principianti: mostra una tabella con TUTTE le rotte definite, il loro metodo HTTP (GET/POST), e a quale controller/funzione sono collegate — un modo rapido per "vedere la mappa" dell'applicazione.
🧩 Applicazioni tipiche
TipologiaUso tipico
Applicazioni web con databaseE-commerce, gestionali, piattaforme SaaS — dove Laravel gestisce autenticazione, validazione, sicurezza già pronte
API RESTBackend per app mobile o applicazioni JavaScript (React, Vue), restituendo dati JSON invece di viste Blade
Progetti che scalano nel tempoQuando un progetto PHP "puro" (come i progetti CMS/CRM già visti) cresce troppo per essere gestito senza una struttura a framework
🎓 Esercitazioni pratiche
1
Crea un progetto Laravel da zero
Installa un nuovo progetto con composer create-project, avvialo con php artisan serve, e verifica che la pagina di benvenuto di Laravel appaia nel browser.
⏱ 20 min📦 1 progetto💻 Individuale
2
Controller con vista Blade personalizzata
Crea un ChiSonoController con un metodo profilo() che passa nome, città e un elenco di 3 hobby a una vista Blade, mostrando i dati con {{ }} e un ciclo @foreach.
⏱ 30 min📦 1 controller + 1 vista💻 Individuale
3
Tre rotte con route:list
Crea tre rotte diverse (home, chi-siamo, contatti) collegate a un unico controller con tre metodi separati, poi esegui php artisan route:list per verificare che tutte compaiano correttamente.
⏱ 20 min📦 1 controller + 3 rotte💻 Individuale