Il pattern MVC in Laravel
Il modello Model-View-Controller (MVC) nell'ingegneria del software è un modo per dividere il codice in tre sezioni distinte. Il modello ospita i dati e la logica aziendale, la vista gestisce l'interfaccia utente e il controllore funge da mediatore tra i due. Questa separazione delle responsabilità porta a un codice più modulare e manutenibile, consentendo inoltre ai membri del team di lavorare contemporaneamente su diversi elementi del codice. Ad esempio, un designer può lavorare sulla vista mentre un programmatore si concentra sul controller.
Controllers
In Laravel, i controllers sono contenuti all’interno della cartella app/Http/Controllers e, come abbiamo anticipato, sono responsabili della gestione degli input dell'utente e della generazione della risposta appropriata.
Nella maggior parte dei casi, il controller riceve la richiesta dell'utente, la convalida e poi la passa ad un modello per l'elaborazione. Una volta che i dati sono stati elaborati, il controller genera l'output appropriato e lo passa alla vista.
Models
Nel pattern MVC, il modello è responsabile del recupero, della creazione, dell'aggiornamento e della cancellazione dei dati. In Laravel, i models sono contenuti all’interno della cartella app/Models.
Oltre alle operazioni CRUD di base, un modello potrebbe contenere anche altre business logics, come operazioni di casting e relazioni con altri modelli. In breve, un modello viene utilizzato per incapsulare tutta la logica necessaria per manipolare i dati.
Visto che l’argomento Model è estremamente vasto, tratteremo l’argomento in maniera più approfondita nel capitolo dedicato ad Eloquent, l’ORM di Laravel.
Per adesso, mi sento solo di aggiungere che per convenzione di Laravel, i Modelli sono dichiarati usando il nome al singolare, mentre la relativa tabella va dichiarata usando il plurale (ovviamente in inglese). È comunque possibile bypassare questo standard, valorizzando la proprietà table di ogni modello.
Views
La vista è il componente che il software utilizza per servire l'interfaccia all’utente. Per impostazione predefinita, in Laravel tutte le viste sono contenute nella cartella resources/views.
Le viste contengono HTML, gli assets JavaScript e CSS, dati dinamici che sono passati dal Controller. Laravel utilizza un proprio template engine, denominato Blade che ha una sua sintassi, molto intuitiva. Il framework le compila in codice PHP e poi le memorizza nella cache fino a quando non vengono modificate.