02 Uno sguardo alla struttura

MVC

Laravel è un framework che utilizza il pattern MVC ovvero Model View Controller, una logica di programmazione ad oggetti che permette di ottenere un codice slegato tra i componenti con una maggiore efficienza e un alta manutenibilità.

La cartella principale di laravel è la cartella app, all’interno della quale troviamo la cartella Models dove all’interno si creano dei modelli che sono delle classi php che permettono di gestire la business logic e interagire per esempio con le tabelle di un database.

Per i Controllers troviamo la relativa cartella in app/Http dove all’interno troviamo le classi che interagiscono con le relative classi dei Models e permettono di effettuare operazioni a seconda dell’iterazione dell’utente restituendo una vista.

Le Views vengono inserite dentro la cartella resources/views, dove troviamo la vista predefinita welcome.blade.php che viene mostrata quando apriamo il progetto.

Struttura di laravel

app

Come abbiamo la cartella più utilizzata è la cartella app.

Dentro di essa troviamo:

Console

abbiamo il file Kernel.php dove si impostano i comandi che si possono lanciare dalla console

Exception

Il file Handler.php che gestisce le eccezioni che vogliamo evidenziare

Http

Qui troviamo i controllers di cui abbiamo parlato e anche i Middleware, funzioni che si interpongono tra la richiesta e la risposta per effettuare controlli o operazioni. Di default troviamo i files:
Authenticate che può gestire il comportamento se l’utente è autenticato, EncryptCookies per gestire la crittografia dei cookie, PreventRequestsDuringMaintenance il comportamento del sito in manutenzione, RedirectIfAuthenticated per redirezionare l’utente autenticato, TrimStrings per proteggere i dati inviati togliendo caratteri pericolosi provenienti da un form, TrustHosts per gestire gli host ammessi a fare chiamate, TrustProxies sono i proxy che vogliamo verificare, VerifyCsrfToken per esempio per evitare gli attacchi cross site request forgery tramite l’uso di un token o per quali rotte non venga verificato.

Models

introdotta nelle più recenti versioni di laravel contiene i modelli che creiamo manualmente o da riga di comando. Il file di default è User per la gestione degli utenti che ha i paramatri name, email, password, remember_token

Providers

è una cartella importante, i files contenuti danno diverse funzionalità a laravel, anche quando utilizziamo packages di altri, i providers danno accesso esponendo servizi, classi templates o oggetti nel contesto di questi packages. Ogni provider può avere un metodo register() per registrare gli oggetti nel container dell’applicazione e boot() per qualunque inizializzazione.

Bootstrap

Qui troviamo la cartella di cache e il file app.php dove viene creata un’istanza dell’applicazione vengono registrati comandi o oggetti importanti all’avvio dell’applicazione.

config

In questa cartella troviamo i files di configurazione per laravel. Le modifiche effettuate nel file .env si ripercuotono sui i files presenti in questa cartella. Inoltre vi sono maggiori paramentri di configurazione non presenti in .env come i tipi di database, le autorizzazioni, la cache, il filesystem, la mail, la coda, i servizi le viste e molto altro ancora.

database

Qui si creano le migrazioni, ovvero dei files che permettono la configurazione e creazione di tabelle. Di default abbiamo le migrazioni per la tabella users, per la creazione delle password e dei jobs che falliscono. Le factories servono per la generazione di dati finti, mentre i seeders alimentano le nostre tabelle

public

Qui troviamo tutto ciò che è pubblico, come le librerie, del css, il file .htaccess che redrezione le richieste al file di ingresso della nostra applicazione index.php

resources

contiene le risorse come il css, il java script, le lingue e le views come abbiamo già visto

routes

contiene le rotte ovvero i percorsi da seguire nella nostra applicazione

storage

contiene i logs, le sessioni, la cache e tutto quello che si vuole scrivere. E’ importante dare i giusti permessi di scrittura a questa cartella in modo che php possa scriverci.

vendor

ci sono tutti i pacchetti che utilizzeremo nella nostra app suddivisi col nome dei loro produttori e ogni nuovo package che installiamo andrà a finire in questa directory