PHP: Struttura MVC
Struttura MVC in PHP
L’architettura MVC è un modello di sviluppo software che separa la logica di business, la gestione dei dati e la presentazione grafica in tre componenti distinti: Model, View e Controller. Questa separazione rende il codice più ordinato, modulare e manutenibile.
Introduzione
Il pattern MVC (Model-View-Controller) è molto diffuso nello sviluppo web, incluso l’uso con PHP. L’idea è dividere l’applicazione in tre parti principali: modello, vista e controllore. Ogni parte ha un compito preciso, riducendo la complessità e migliorando la collaborazione tra sviluppatori.
I tre componenti principali
Analizziamo i tre elementi fondamentali dell’architettura MVC:
- Model (Modello): rappresenta i dati e la logica di business dell’applicazione. Comunica con il database, elabora i dati e fornisce le informazioni al Controller.
- View (Vista): è la parte visibile dall’utente. Si occupa di mostrare i dati (provenienti dal Model) in un formato leggibile, tipicamente pagine HTML con PHP.
- Controller (Controllore): gestisce le richieste dell’utente, decide quale Model interrogare e quale View mostrare. È il “regista” che collega input e output.
Flusso di lavoro MVC
Il flusso tipico di un’applicazione MVC è il seguente:
- L’utente interagisce con l’interfaccia (View), ad esempio inviando un form.
- La richiesta viene ricevuta dal Controller.
- Il Controller elabora la richiesta e interroga il Model per ottenere o modificare i dati.
- Il Model restituisce le informazioni al Controller.
- Il Controller passa i dati alla View, che li mostra all’utente.
Esempio minimale di MVC
Vediamo un esempio molto semplice: vogliamo mostrare il nome di un utente salvato nel “modello”. Il Controller recupera i dati dal Model e li passa alla View che li visualizza.
Codice Esempio: MVC di base

<?php
// Model (gestisce i dati)
class Utente {
public $nome = "Mario Rossi";
}
// Controller (logica applicativa)
class UtenteController {
public function mostraUtente() {
$utente = new Utente();
return $utente->nome;
}
}
// View (interfaccia utente)
$controller = new UtenteController();
$nome = $controller->mostraUtente();
echo "Benvenuto, " . $nome;
?>
<!-- Output:
Benvenuto, Mario Rossi
-->
Esempio con input simulato
In un contesto reale, il Controller riceve i dati dall’utente (ad esempio da un form). Qui simuliamo l’inserimento del nome tramite una variabile e lo passiamo al Model.
Codice Esempio: MVC con input

<?php
// Model
class Utente {
public $nome;
public function __construct($nome) {
$this->nome = $nome;
}
}
// Controller
class UtenteController {
public function creaUtente($nome) {
return new Utente($nome);
}
}
// View
$controller = new UtenteController();
$utente = $controller->creaUtente("Anna Bianchi");
echo "Benvenuto, " . $utente->nome;
?>
<!-- Output:
Benvenuto, Anna Bianchi
-->
Tabella riassuntiva
Componente | Ruolo | Esempio |
---|---|---|
Model | Gestisce i dati e la logica di business | Classe PHP per query al database |
View | Mostra l’interfaccia all’utente | File PHP/HTML per presentare dati |
Controller | Coordina input e output | Script PHP che riceve richieste |
Considerazioni
L’architettura MVC non è un framework in sé, ma un modello concettuale che può essere implementato in PHP sia manualmente che con l’aiuto di framework come Laravel o CodeIgniter. La separazione dei ruoli consente di avere codice più leggibile, facilmente aggiornabile e adatto a progetti complessi. In applicazioni complesse (framework come Laravel o Symfony) la logica MVC è molto più articolata, ma il principio rimane lo stesso.