Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Laravel, struttura di un progetto e configurazioni generali

Il framework PHP Laravel decide per noi la struttura delle cartelle di un progetto, non si tratta però di una limitazione, ma più semplicemente di un aiuto fornito allo sviluppatori per organizzare al meglio i vari componenti software di un'applicazione.
Il framework PHP Laravel decide per noi la struttura delle cartelle di un progetto, non si tratta però di una limitazione, ma più semplicemente di un aiuto fornito allo sviluppatori per organizzare al meglio i vari componenti software di un'applicazione.
Link copiato negli appunti

Dopo alcuni articoli introduttivi sul framework Laravel, è arrivato il momento di mettere in pratica quanto appreso e concentrarsi sugli aspetti più tecnici. Questo e i prossimi articoli saranno divisi in due parti; nella prima introdurremo le varie funzionalità di Laravel mentre nella seconda arricchiremo passo passo la nostra applicazione.

Struttura di un progetto

Una volta creata la nostra applicazione con la metodologia che preferiamo (tramite installer o tramite composer come da primo articolo della guida), quello che ci si presenta è una struttura di folder abbastanza complessa per chi si avvicina per la prima volta a questo strumento. La struttura può sembrare parecchio dispersiva e ridondante, ma una volta appresi gli scopi di ciascuna cartella tutto sembrerà più sensato. La struttura di un progetto Laravel è la seguente:

Figura 1. Struttura di un progetto con Laravel
Struttura di un progetto con Laravel

Analizziamo più nel dettaglio le diverse cartelle:

Directory Descrizione
app Rappresenta il cuore pulsante dell’applicazione, tutti i file che implementano la business logic verranno creati in questa cartella; all’interno della cartella verranno posizionati anche i vari model
app/Console Contiene i comandi personalizzati che eseguiremo nella console
app/Events Contiene eventuali eventi personalizzati che potremmo creare per far comunicare diversi componenti tra di loro
app/Exceptions Contiene eventuali eccezioni custom utili
app/Http Contiene tutta la logica Web dell’applicazione suddivisa in sottocomponenti
app/Http/Controllers Contiene tutti controller
app/Http/Middleware Contiene tutti i middleware e i filtri
app/Http/Request Contiene tutti gli oggetti request definiti secondo lo standard PSR-7
app/Jobs Contiene tutti i queueable job dell’applicazione
app/Listeners Contiene tutti le classi handler di eventi applicativi
app/Providers Contiene tutti i Service Providers custom
bootstrap Contiene i file principali per l’avvio di Laravel e una cartella cache per motivi di performance
config Contiene tutte le configurazioni a livello applicativo
database Contiene tutti i file relativi alla definizione del database
database/factories Contiene le factory in grado di creare massivamente dei contenuti di test
database/migrations Contiene le definizioni storicizzate della struttura del database
database/seeds Contiene script per il popolamento delle tabelle
public Rappresenta la document root del progetto e contiene tutte le risorse statiche pubbliche (JS, CSS, immagini, fonts…)
resources Contiene file di logica ma non applicativi
resources/assets Contiene eventuali assets pubblici da compilare (Less, Sass, CoffeeScript, TypeScript...)
resources/lang Contiene i file per l'internazionalizzazione
resources/views Contiene le viste PHP o blade
storage Contiene file temporanei o cache
storage/app Contiene file temporanei legati all’applicazione
storage/framework Contiene file temporanei legati a Laravel
storage/logs Contiene i log applicativi
tests Contiene i file per i test automatici
vendor Contiene, come da specifiche, tutte le dipendenze

Nella root del progetto sono presenti alcuni file descrittori da utilizzare con git, composer, gulp, npm, phpunit, l’eseguibile artisan e il file di configurazione dotenv.

Le configurazioni di un progetto Laravel

La prima cartella che richiede la nostra attenzione, è config. In questa directory sono presenti tutte le configurazioni dell’applicazione e di eventuali moduli aggiuntivi installati. I diversi contesti dell’applicazione sono configurati tramite file differenti in modo da offrire maggior manutenibilità: per esempio le configurazioni legate al database si troveranno in database.php mentre quelle per l’invio delle email in mail.php.

Spesso però alcune configurazioni possono differire tra i diversi ambienti; Laravel gestisce questa possibilità tramite la libreria DotEnv. Questa prevede la creazione di un file di configurazione .env nella root del progetto. Tutti i settaggi presenti verranno caricati all’interno dell’array globale $_ENV e grazie alla funzione env di Laravel è possibile impostarli all’interno del framework.

Una configurazione particolare è l’applicationKey. Questa permette di garantire un livello di sicurezza maggiore in quanto rappresenta la chiave di criptazione di sessioni e altri dati sensibili.

La regola generale quindi rimane quella di utilizzare DotEnv per quelle variabili che possono differire tra i diversi ambienti e di utilizzare direttamente i file nella cartella config per le configurazioni che non possono variare.

E’ buona norma non condividere il file .env con i vari membri del team o tramite git o svn. La miglior pratica è invece quella di mantenere un file .env.example con una configurazione base ma lasciare al singolo sviluppatore l’onere di definire il proprio file. Per questo motivo il file .env viene inserito di default dentro il file .gitignore autogenerato da Laravel in fase di setup iniziale.

Creazione e configurazione del progetto Biblios

Una volta appresi i concetti teorici, iniziamo a lavorare sulla nostra applicazione denominata "Biblios". Tramite il comando:

composer create-project laravel/laravel biblios --prefer-dist

installiamo l’applicazione. Una volta scaricati i sorgenti grazie a composer dedichiamoci alla definizione dell’applicationKey tramite:

artisan key:generate

L’applicazione è ora pronta! Dal prossimo articolo ci addentreremo nei vari moduli del Framework. Ricordate di eseguire un composer update e di creare un file .env basandovi su .env.example.

Ti consigliamo anche