Una volta effettuata l’installazione di Symfony, la cartella del progetto si presenterà come nella figura in basso.
Come puoi notare dall’immagine, ogni progetto Symfony è composto da sei cartelle principali (che approfondiremo a breve):
- bin
- config
- public
- src
- var
- vendor
Nella route principale, invece, troviamo i seguenti file:
- .env: in questo file vengono definite tutte le variabili d’ambiente da passare all’applicazione. Possono essere presenti parametri di configurazione, stringhe di connessione al database e credenziali.
- composer.json: come già visto in precedenza, in questo file json vengono definiti i requisiti e le dipendenze del progetto.
- composer.lock: questo file è generato da Composer e non deve mai essere modificato manualmente. Contiene un elenco di tutte le dipendenze installate e della relativa versione.
- symfony.lock: questo file è gestito da Symfony Flex, come vedremo più avanti nella guida, e anche lui non deve mai essere modificato manualmente.
Vediamo, ora, le singole cartelle un po’ più nel dettaglio.
La cartella bin in un progetto Symfony
All’interno della cartella bin è presente lo script console. La console è la CLI (command line interface) con la quale è possibile effettuare varie operazioni sul progetto, come la pulizia della cache e la creazione di codice boilerplate. Per accedere alla console è sufficiente un terminale.
La cartella config in un progetto Symfony
All’interno della cartella config sono presenti tutte le configurazioni del progetto. Generalmente, la maggior parte dei file di configurazione saranno in formato yaml.
Ecco una rapida overview di quello che è presente in “config”:
- packages/: questa sottodirectory contiene una serie di file YAML che definiscono la configurazione dei vari bundle e componenti utilizzati nell’applicazione.
- services.yaml: qui vengono definiti i servizi utilizzati nell’applicazione.
routes.yaml: questo file è dove vengono definite le rotte dell’applicazione, tramite la mappatura dei Controller agli URL desiderati.
La cartella public in un progetto Symfony
La cartella public contiene l’entry point dell’applicazione ovvero il file index.php.
In questa cartella, inoltre, possono essere inseriti tutti gli asset del sito come immagini, file CSS, file JavaScript e qualsiasi altro tipo di risorsa che si vuole rendere disponibile pubblicamente su Internet. Solitamente, la cartella “public” deve essere l’unica cartella accessibile pubblicamente dai visitatori del sito web. Tutte le altre cartelle devono essere private e non esposte pubblicamente su Internet, in quanto contengono la logica di business e le impostazioni del progetto.
La cartella src in un progetto Symfony
La cartella src (source) è il posto in cui è presente la logica di business del progetto, quindi conterrà i file PHP relativi a Controller, Model, ecc.
La cartella var in un progetto Symfony
“var” è una cartella interna di Symfony che ingloba a sua volta due cartelle chiamate “cache” e “log”.
La cartella cache ospita tutti i file e le impostazioni generate durante l’avvio e l’esecuzione della web app per permettere agli utenti del sito un’esperienza di utilizzo migliore ed una navigazione più veloce, riducendo il tempo necessario per generare le risposte.
Nella cartella log, invece, vengono tracciate tutte le eccezioni, messaggi di errore e richieste al server che si verificano durante l’esecuzione dell’applicazione e sono utili per effettuare debug e ricerche su eventi specifici.
La cartella vendor in un progetto Symfony
La cartella “vendor” contiene tutti i file generati durante l’installazione di Symfony e non deve essere modificata. All’interno sono presenti tutti i componenti di Symfony e librerie di terze parti installate. Questa cartella viene gestita da Composer.