Caution: You are browsing the legacy symfony 1.x part of this website.
Cover of the book Symfony 5: The Fast Track

Symfony 5: The Fast Track is the best book to learn modern Symfony development, from zero to production. +300 pages showcasing Symfony with Docker, APIs, queues & async tasks, Webpack, SPAs, etc.

Gli ambienti

Guardando nella cartella web/, ci saranno due file PHP: index.php e frontend_dev.php. Questi file sono chiamati front controller e vengono utilizzati per gestire tutte le richieste fatte all'applicazione. Ma perché avere due front controller per ogni applicazione?

Entrambi i file puntano alla stessa applicazione, ma per ambienti differenti. Quando viene sviluppata un'applicazione, a eccezione di quelle sviluppate direttamente sul server di produzione, sono necessari diversi ambienti:

  • L'ambiente di sviluppo: Questo ambiente è utilizzato dagli sviluppatori web quando devono lavorare sull'applicazione per aggiungere nuove funzionalità, correggere problemi, etc..
  • L'ambiente di test: Questo ambiente è usato per testare automaticamente l'applicazione.
  • L'ambiente di stage: Questo ambiente è utilizzato dal cliente per provare l'applicazione e per comunicare eventuali problemi o mancanza di funzionalità.
  • L'ambiente di produzione: Quest'ultimo ambiente è quello che verrà usato dagli utenti finali.

Cosa rende ogni ambiente differente? Ad esempio, nell'ambiente di sviluppo, l'applicazione deve registrare tutti dettagli delle richieste per rendere più facile il debug del codice, contemporaneamente deve avere la cache disabilitata per permettere di vedere subito i risultati del proprio lavoro. In sostanza l'ambiente di sviluppo deve essere ottimizzato per gli sviluppatori. Il miglior esempio che si può dare è quello delle eccezioni del framework. Per aiutare lo sviluppatore a controllare il proprio codice velocemente, symfony mostra l'eccezione per la richiesta fatta, con tutte le informazioni a essa correlate, direttamente all'interno del browser:

Una eccezione nell'ambiente di sviluppo

Ma nell'ambiente di produzione la cache deve essere attivata e, ovviamente, l'applicazione deve mostrare i messaggi di errore personalizzati invece che lo stack delle eccezioni. Quindi, l'ambiente di produzione deve essere ottimizzato per le prestazioni e per la user experience.

Una eccezione nell'ambiente di produzione

note

Se vengono aperti i file di front controller, si potrà notare che il contenuto degli stessi è uguale a eccezione dei parametri che definiscono l'ambiente:

// web/index.php
<?php
 
require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');
 
$configuration = ProjectConfiguration::getApplicationConfiguration('frontend', 'prod', false);
sfContext::createInstance($configuration)->dispatch();

La toolbar di web debug è un altro grande esempio dell'utilizzo degli ambienti. Questa è presente in tutte le pagine dell'ambiente di sviluppo e dà accesso a molte informazioni cliccando sulle differenti aree, ad esempio: i parametri di configurazione dell'attuale applicazione, i log per la richiesta http corrente, le richieste SQL eseguite sul database, informazioni sulla memoria e sul tempo di esecuzione.