Symfony - Architettura
Symfony è fondamentalmente una raccolta di componenti e bundle di alta qualità. I componenti sono una raccolta di classi che forniscono un'unica funzionalità di base. Per esempio,Cache componentfornisce funzionalità di cache, che possono essere aggiunte a qualsiasi applicazione. I componenti sono blocchi di costruzione di un'applicazione Symfony. Symfony ha più di 30 componenti di alta qualità, che vengono utilizzati in molti framework PHP come Laravel, Silex, ecc.
I bundle sono simili ai plugin ma facili da creare e da usare. In realtà, un'applicazione Symfony è essa stessa un bundle composto da altri bundle. Un singolo bundle può utilizzare un numero qualsiasi di componenti Symfony e anche componenti di terze parti per fornire funzionalità come Webframework, accesso al database, ecc. opzioni per scrivere un'applicazione web.
La relazione tra i componenti, i bundle e l'applicazione Symfony è specificata nel diagramma seguente.
Web Framework
Symfony è progettato principalmente per scrivere applicazioni web di alta qualità con relativa facilità. Fornisce varie opzioni per scrivere diversi tipi di applicazioni web, dal semplice sito web ai servizi web avanzati basati su REST. Symfony fornisce framework web come bundle separati. I bundle comuni usati nel framework web Symfony sono i seguenti:
- FrameworkBundle
- FrameworkExtraBundle
- DoctrineBundle
Il framework web di Symfony è basato sull'architettura Model-View-Controller (MVC). Model rappresenta la struttura delle nostre entità aziendali. View mostra i modelli all'utente nel miglior modo possibile a seconda della situazione. Controller gestisce tutte le richieste dell'utente, fa il lavoro vero e proprio interagendo con Model e infine fornisce alla View i dati necessari per mostrarlo all'utente.
Il framework web Symfony fornisce tutte le funzionalità di alto livello richieste per un'applicazione di livello aziendale. Di seguito è riportato un semplice flusso di lavoro dell'applicazione web Symfony.
Il flusso di lavoro è costituito dai seguenti passaggi.
Step 1 - L'utente invia una richiesta all'applicazione tramite il browser, ad esempio http://www.symfonyexample.com/index.
Step 2 - Il browser invierà una richiesta al server web, ad esempio il server web Apache.
Step 3 - Il server web inoltrerà la richiesta al PHP sottostante, che a sua volta la invia al framework web Symfony.
Step 4- HttpKernel è il componente principale del framework web di Symfony. HttpKernel risolve il controller della richiesta data utilizzando il componente Routing e inoltra la richiesta al controller di destinazione.
Step 5 - Tutta la logica di business si svolge nel controller di destinazione.
Step 6 - Il controller interagirà con Model, che a sua volta interagisce con Datasource tramite Doctrine ORM.
Step 7 - Una volta che il controller ha completato il processo, genera la risposta stessa o tramite View Engine e la invia di nuovo al server web.
Step 8 - Infine, la risposta verrà inviata al browser richiesto dal server web.