Lezione 1 — Cos'è Laravel e perché usarlo: Introduzione al Framework PHP più Popolare

Scopri cos'è Laravel, come funziona l'architettura MVC e perché è la scelta ideale per sviluppare applicazioni web moderne, scalabili e sicure con PHP.

Introduzione a Laravel

Benvenuti alla prima lezione del nostro corso "Impara Laravel in 50 lezioni". Se sei un programmatore che ha già avuto a che fare con PHP, o se stai iniziando ora il tuo percorso nel mondo del backend, probabilmente avrai sentito parlare di Laravel.

Ma cos'è esattamente Laravel? In termini semplici, Laravel è un framework open-source per lo sviluppo di applicazioni web scritto in PHP. Ma per capire davvero cosa sia, dobbiamo prima chiarire il concetto di "framework".

Immagina di voler costruire una casa. Potresti decidere di fabbricare ogni singolo mattone, forgiare i chiodi e tagliare il legno a mano (questo sarebbe l'equivalente di scrivere PHP "puro" o vanilla PHP). Oppure, potresti acquistare dei moduli prefabbricati, utilizzare strumenti standardizzati e seguire un progetto architettonico collaudato. Il framework Laravel è esattamente questo: un insieme di strumenti, librerie e convenzioni che ti forniscono una struttura solida, permettendoti di concentrarti sulla logica del tuo business invece di reinventare la ruota per ogni singola funzionalità (come la gestione delle sessioni, l'autenticazione o la connessione al database).

Perché usare Laravel invece di PHP Vanilla?

Molti principianti si chiedono: "Perché dovrei imparare un framework se posso già scrivere codice in PHP?". La risposta risiede in tre pilastri fondamentali: produttività, sicurezza e manutenibilità.

1. Produttività accelerata

Laravel implementa il concetto di "Developer Happiness". Il creatore di Laravel, Taylor Otwell, ha progettato il framework per rendere l'esperienza di programmazione piacevole. Grazie a strumenti come Artisan (l'interfaccia a riga di comando di Laravel), puoi generare controller, modelli e migrazioni in pochi secondi. Operazioni che in PHP vanilla richiederebbero decine di righe di codice boilerplate, in Laravel si risolvono con un singolo comando.

2. Sicurezza integrata

La sicurezza è uno degli aspetti più critici del web development. Scrivere codice sicuro da zero è difficile e prono a errori. Laravel protegge automaticamente la tua applicazione da diverse vulnerabilità comuni:

  • SQL Injection: Grazie all'uso di Eloquent ORM, le query sono parametrizzate di default.
  • Cross-Site Request Forgery (CSRF): Laravel include token di sicurezza per ogni richiesta POST, proteggendo i tuoi moduli da attacchi esterni.
  • Cross-Site Scripting (XSS): Il motore di template Blade scappa automaticamente i dati in uscita, impedendo l'esecuzione di script malevoli.

3. Manutenibilità e Standard

Quando lavori in un team o su un progetto a lungo termine, la coerenza è tutto. Laravel impone una struttura di cartelle e una logica di organizzazione (il pattern MVC) che rende il codice leggibile per chiunque conosca il framework. Non dovrai più chiederti "dove ha messo questo file il mio collega?", perché in Laravel c'è un posto prestabilito per ogni cosa.

L'Architettura MVC: Il cuore di Laravel

Per padroneggiare Laravel, è fondamentale comprendere il pattern architetturale MVC (Model-View-Controller). Questo modello separa la logica dell'applicazione in tre componenti distinti, evitando che il codice diventi un "ammasso" indistinguibile di HTML e PHP.

Il Modello (Model)

Il Model rappresenta i dati e la logica di business. È l'intermediario tra l'applicazione e il database. In Laravel, i modelli sono gestiti da Eloquent, un ORM (Object-Relational Mapper) potentissimo che permette di interagire con le tabelle del database come se fossero oggetti PHP, senza dover scrivere query SQL complesse.

La Vista (View)

La View è l'interfaccia utente, ovvero ciò che l'utente finale vede nel browser. Laravel utilizza Blade, un motore di template che permette di scrivere HTML pulito con l'aggiunta di direttive semplificate per cicli, condizionali e l'estensione di layout.

Il Controller

Il Controller è il "cervello" che coordina l'operazione. Riceve la richiesta dall'utente (tramite le rotte), interroga il Model per ottenere i dati necessari e infine decide quale View mostrare all'utente.

Ecco un esempio concettuale di come fluisce una richiesta in Laravel: Utente richiedere /profilo $ ightarrow$ Rotta (Route) $ ightarrow$ Controller $ ightarrow$ Model (Database) $ ightarrow$ Controller $ ightarrow$ View (HTML) $ ightarrow$ Utente.

Esempi Pratici: Vediamo Laravel in azione

Per rendere concrete queste spiegazioni, analizziamo come Laravel semplifica operazioni comuni. Immaginiamo di voler creare una pagina che mostri l'elenco di tutti gli utenti registrati in un database.

1. Definizione della Rotta

Invece di creare un file utenti.php nella root del sito, definiamo una rotta nel file routes/web.php.

<?php

use App\\Http\\Controllers\\UserController;
use Illuminate\\Support\\Facades\\Route;

// Quando l'utente visita /utenti, chiama il metodo 'index' del UserController
Route::get('/utenti', [UserController::class, 'index']);

Spiegazione: Questo blocco di codice mappa un URL specifico a una funzione specifica. È pulito, centralizzato e facile da modificare.

2. Il Controller e il Modello

Ora creiamo il controller che recupera i dati tramite il modello User.

<?php

namespace App\\Http\\Controllers;

use App\\Models\\User;
use Illuminate\\Http\\Request;

class UserController extends Controller
{
    public function index()
    {
        // Recuperiamo tutti gli utenti dal database usando Eloquent
        $utenti = User::all();

        // Passiamo i dati alla vista 'users.index'
        return view('users.index', ['utenti' => $utenti]);
    }
}

Spiegazione: Nota come User::all() sostituisca una query SQL come SELECT * FROM users. Questo rende il codice estremamente leggibile e indipendente dal database specifico (puoi passare da MySQL a PostgreSQL senza cambiare questo codice).

3. La Vista con Blade

Infine, creiamo il file resources/views/users/index.blade.php per visualizzare i dati.

<h1>Lista Utenti</h1>
<ul>
    @foreach ($utenti as $utente)
        <li>{{ $utente->name }} - {{ $utente->email }}</li>
    @endforeach
</ul>

Spiegazione: L'uso di @foreach e delle doppie graffe {{ }} è tipico di Blade. Le doppie graffe non solo stampano il valore, ma applicano automaticamente un filtro di sicurezza per prevenire attacchi XSS.

Errori comuni per chi inizia

Passare da PHP vanilla a Laravel può essere disorientante. Ecco alcuni degli errori più frequenti commessi dai principianti:

  1. Mettere troppa logica nel Controller: Molti tendono a scrivere tutte le query e i calcoli nel controller. La best practice è mantenere i controller "snelli" (Skinny Controllers) e spostare la logica di business nei Model o in classi di servizio dedicate.
  2. Dimenticare le Migrazioni: Invece di creare tabelle manualmente via phpMyAdmin, i principianti a volte continuano a farlo. Laravel offre le Migrations, che sono come un "versioning" per il database. Usale sempre per permettere ad altri sviluppatori di replicare il tuo database con un comando.
  3. Ignorare l'errore 419 (Page Expired): Questo accade quasi sempre quando si crea un modulo HTML senza includere la direttiva @csrf. Ricorda: ogni modulo POST in Laravel deve avere un token CSRF per motivi di sicurezza.

FAQ Rapide

Domanda: Serve conoscere JavaScript per usare Laravel? Risposta: Non è obbligatorio per le basi, ma è fortemente consigliato. Laravel si integra perfettamente con Vue.js e React, e offre strumenti come Livewire che permettono di creare interfacce dinamiche scrivendo quasi solo PHP.

Domanda: Laravel è lento perché è un framework? Risposta: Sebbene un framework aggiunga un leggero overhead rispetto a un file PHP singolo, Laravel offre sistemi di caching avanzati e ottimizzazioni che rendono le performance eccellenti per il 99% delle applicazioni web aziendali.

Prossimi passi

Ora che hai capito cos'è Laravel e perché è così potente, è il momento di sporcarsi le mani. Non puoi imparare a programmare solo leggendo, devi scrivere codice.

Cosa fare ora:

  1. Installa l'ambiente: Installa PHP e Composer (il gestore di dipendenze per PHP). Se sei su Windows, ti consiglio di usare Laravel Herd o XAMPP. Se sei su Mac, Laravel Herd è la scelta migliore.
  2. Crea il tuo primo progetto: Usa il comando composer create-project laravel/laravel mio-progetto per generare la struttura base.
  3. Esplora la documentazione: La documentazione ufficiale di Laravel è considerata una delle migliori nel mondo dello sviluppo software. Prenditi del tempo per sfogliarla.

Nella prossima lezione, vedremo come installare correttamente Laravel sul tuo computer e come configurare il primo server locale per iniziare a sviluppare la tua prima applicazione reale. Ci vediamo alla Lezione 2!