Tempo di lettura: 4 minuti

Skills Updated: framework opensource




Se l'articolo ti incuriosisce, prendi lo Shuttle e partecipa all'evento il 25 e 26 Ottobre: SCOPRI DI PIÙ

 




COS'È SYMFONY?

Spesso si sente parlare di Symfony come un framework Open Source full stack che segue il pattern MVC. Altrettanto spesso ci si dimentica però che non è “solo” un semplice framework, bensì un insieme di componenti indipendenti e riutilizzabili del linguaggio PHP. Componenti (che da ora chiamerò Bundle) che, per altro, ci permettono di risolvere alcuni problemi comuni dello sviluppo web.
Questa sua caratteristica di comprendere molti Bundle lo rendono un framework completo che si basa sul principio di “non reinventiamo la ruota” (riuso del codice).
Infatti a seconda del progetto che stiamo sviluppando, o delle nostre reali necessità, si possono scegliere quali Bundle utilizzare avendo quindi a disposizione dei metodi già pronti da integrare nelle nostre applicazioni.
 

SYMFONY È UN FRAMEWORK MVC?

La risposta è si, però è doveroso dire che è la sua natura di possedere tanti Bundle disaccoppiati che lo rende tale.
Tuttavia se dovessimo parlare solo del “cuore” di Symfony, non può essere considerato un framework MVC. Symfony è in grado di fornire solo la parte Controller. Per quanto concerne Vista e Modello bisogna, infatti, ricorrere a Bundle Twig e Doctrine ORM.

A questo punto, quindi, verrebbe da chiederci se Symfony sia davvero un framework moderno e al passo con i tempi. Beh, la risposta è ancora si, ma questa volta non solleverò nessuna obiezione.
Ormai il nome MVC è quasi abusato nel mondo dei framework e si è perso di vista il suo vero core.
Non è un problema che Symfony non sia un framework MVC, l’importante è che il framework sia orientato al web. O meglio, che sia un framework HTTP in grado di gestire Richieste e Risposte. A questo scopo Symfony si basa proprio sulla specifica HTTP.
 
Negli ultimi anni il web si è evoluto e ritengo che il pattern MVC possa considerarsi superato. In alcuni progetti ormai è necessario creare solo API REST e la potenza dei nostri dispositivi ci ha permesso di spostare la maggior parte della logica nei browser, lasciando al server il compito di fornire i dati e le informazioni creando qualcosa che gestisse le Richieste e le Risposte: i puri e semplici controller.
Ecco spiegato perché, per come si è evoluto il web negli ultimi anni, MVC non si adatta bene alle nuove tipologie progettuali.  
 
 

PERCHÈ SYMFONY È IMPORTANTE NEL MONDO DELLO SVILUPPO WEB?

Quasi ogni mese si sentono aggiornamenti su nuovi strumenti creati per il web e/o framework. Nel mondo enterprise, però, c’è posto solo per pochi eletti. Symfony fa parte di uno di questi.
Ma per poter mantenere il proprio posto d'onore tra i framework enterprise bisogna continuare ad innovare e sviluppare. Symfony ha dimostrato di essere perfettamente in grado di farlo, continuando a rinnovarsi e prendere ispirazione da altre tecnologie, framework e linguaggi web.

Symfony si evolve insieme al web, un aspetto non di poco conto. La sua caratteristica frammentaria fà si che si possa seguire alla lettera il principio di riuso del codice, permettendo di mantenere costantemente aggiornati i suoi componenti in quanto sviluppati separatamente. Dotato di un codice solido, i componenti principali di Symfony nascono dall'esperienza e da anni di lavoro da parte di molti sviluppatori. Questa solidità la si può constatare semplicemente osservando il codice di Symfony.
Si noti ad esempio il tag @api attestato su alcune classi e metodi: esso indica che la API è dichiarata stabile, e non cambierà nelle release minori. Sembra una questione di poco conto, ma questo ci permette di poter aggiornare la versione di Symfony senza dover fare delle modifiche sul codice evitando di interrompere lo sviluppo parallelo del progetto. È un ottimo biglietto da visita, in un mondo dove raramente le applicazioni web vengono aggiornate proprio per la difficoltà o effort eccessivi necessari alla migrazione ad una versione superiore. Un’ulteriore punto a favore di Symfony è la sicurezza che viene data attraverso il componente Security. Esso fornisce un sistema completo di protezione per le applicazioni web con servizi per il riconoscimento, utilizzando l'autenticazione http, l'accesso con form interattivo o login con certificato X.509, consentendo anche di implementare le proprie strategie di autenticazione. 
 
 

QUALI SONO I BUNDLE PRINCIPALI DI SYMFONY?

Ho ripetuto spesso della natura frammentaria di Symfony sarebbe quindi un peccato non elencare alcuni dei Bundle che si hanno a disposizione per la creazione delle nostre applicazioni.

Eccoli di seguito:
DependencyInjection
EventDispatcher
HttpFoundation
DomCrawler
ClassLoader
CssSelector
HttpKernel
BrowserKit
Templating
Translation
Serializer
Validator
Security
Routing
Console
Process
Config
Finder
Locale
Yaml
Form
 
Ogni Bundle ha un proprio repository Git, dal quale è possibile recuperare il codice. Per poterli integrare nel progetto sarà necessario usare Composer: il famoso gestore di dipendenze di PHP che è diventato fondamentale anche per Symfony dalla versione 2.
 
 
 

CONCLUSIONI

Symfony è quindi uno dei più importanti framework in ambito web ed enterprise che si adatta sia a piccoli progetti personali, open source, ma anche per progetti enterprise, grazie alla sua flessibilità, sicurezza e al suo continuo evolversi.
 
 
Andrea Greco