Giorno 23: Un altro sguardo a symfony

Oggi è l'ultima fermata del nostro viaggio nel meraviglioso mondo di symfony. Durante questi ventitré giorni, avete imparato a usare symfony per esempi: dai design pattern usati dal framework, alle potenti feature incluse. Non siete ancora degli esperti di symfony, ma avete tutta la conoscenza necessaria per costruire la vostra applicazione symfony con fiducia.

In chiusura del tutorial, diamo un altro sguardo al framework. Dimentichiamo Jobeet per un'ora e ricordiamo tutte le feature imparate durante le ultime tre settimane.

Cos'è symfony?

Il ~framework|Framework~ symfony è un insieme di sotto-framework coesi ma disaccoppiati, che formano un completo framework MVC (Modello, Vista, Controllore).

Prima di pensare al codice, meglio spendere un po' di tempo per leggere la storia e la filosofia di symfony. Quindi, verificare i prerequisiti del framework, e usare lo script check_configuration.php per validare la propria configurazione.

Infine, installare symfony. Dopo un po' di tempo, forse si vorrà anche aggiornare all'ultima versione del framework.

Il framework fornisce anche degli strumenti per facilitare il rilascio.

Il ~Modello~

La parte di symfony del Modello può essere fatta con l'aiuto di Propel. Basato sulla Doctrine. Basato sulla descrizione del database, genera delle classi per oggetti, form, e filtri. ##ORM## inoltre genera le istruzioni SQL usati per creare le tabelle del database.

La configurazione del database può essere fatta con un task o modificando un file di configurazione. Oltre alla configurazione, è possibile inserire dei dati iniziali, grazie ai file fixture. Si possono anche rendere tali file dinamici.

Gli oggetti Propel possono anche essere facilmente internazionalizzati. Gli oggetti Doctrine possono anche essere facilmente internazionalizzati.

La ~Vista~

Di default, il livello della Vista dell'architettura MVC usa semplici file PHP come template.

I template possono usare degli helper per compiti ricorrenti, come la creazione di URL o di link.

Un template può essere decorato da un layout per astrarre header e footer delle pagine. Per rendere le viste ancora più riusabili, si possono definire slot, partial, e component.

Per accelerare le cose, si può usare il sotto-framework della cache per mettere in cache una pagina intera, solo l'azione, o anche solo partial o component. Si può anche pulire la cache a mano.

Il ~Controllore~

La parte del Controllore è gestita dai front controller e dalle azioni.

I task possono essere usati per creare semplici moduli, moduli CRUD, o anche per generare moduli di amministrazione pienamente funzionanti per le classi del modello.

I moduli di amministrazione consentono di costruire un'applicazione pienamente funzionante senza scrivere codice.

Per astrarre l'implementazione tecnica di un sito, symfony usa un sotto-framework per il routing che genera URL carini. Per rendere ancora più facile l'implementazione dei web service, symfony supporta i formati in modo nativo. Si possono anche creare i propri formati.

Un'azione può essere rimandata a un'altra, oppure rinviata.

~Configurazione~

Il framework symfony rende facile avere diverse ~impostazioni|Impostazioni~ di configurazione per diversi ~ambienti|Ambienti~. Un ambiente è un insieme di impostazioni che consentono comportamenti diversi sui server di sviluppo o di produzione. Si possono anche creare nuovi ambienti.

I file di configurazione di symfony possono essere definiti a diversi livelli e la maggior parte di essi sono sensibili all'ambiente:

I file di configurazione usano per lo più il formato YAML.

Invece di usare la struttura predefinita di cartelle e organizzare i file della propria applicazione per livelli, si può anche organizzarli per feature, e distribuirli in un plugin. Parlando di struttura predefinita delle cartelle, si può anche personalizzarla a seconda delle proprie esigenze.

~Debug~

Dai log alla web debug toolbar, alle Dai log alla web debug toolbar, alle eccezioni, symfony fornisce molti strumenti utili per aiutare lo sviluppatore a risolvere velocemente i problemi.

Oggetti principali di symfony

Il framework symfony fornisce pochi oggetti che astraggono le esigenze frequenti nei progetti web: la richiesta, la risposta, l'utente, i log, il routing, e il gestore della cache della vista.

Questi oggetti principali sono gestiti dall'oggetto sfContext e sono configurati tramite i factory.

La classe user gestisce l'autenticazione degli utenti, l'autorizzazione, i flash, e gli attributi da serializzare nella sessione.

~Sicurezza~

Il framework symfony ha delle protezioni incluse contro gli attacchi XSS e CSRF. Queste impostazioni possono essere configurate dalla linea di comando, oppure modificando un file di configurazione.

Il framework dei form fornisce anche delle feature di sicurezza incluse.

~Form~

Siccome la gestione dei form è uno dei compiti più noiosi per uno sviluppatore web, symfony fornisce un sotto-framework. Il framework dei form è distribuito con molti widget e validatori. Uno dei punti di forza del sotto-framework dei form è la grande facilità di personalizzazione dei template.

Se si usa ##ORM##, il framework dei form rende anche facile generare form e filtri basati sui modelli. generare form e filtri basati sui modelli.

Internazionalizzazione e localizzazione

Internazionalizzazione e localizzazione sono supportate da symfony, grazie allo standard ICU. La cultura dell'utente determina la lingua e il paese dell'utente. Può essere definita dall'utente stesso, oppure inclusa nell'URL.

Test

La libreria lime, usata per i test unitari, fornisce molti metodi di test. Anche gli oggetti Propel possono essere testati da oggetti Doctrine possono essere testati da un database dedicato e con fixture dedicate.

I test unitari possono essere eseguiti uno alla volta o tutti insieme.

I test funzionali sono scritti con la classe sfFunctionalTest, che usa un simulatore di browser e consente agli oggetti principali di symfony l'introspezione tramite i Tester. I Tester esistono per l'oggetto richiesta, per l'oggetto risposta, per l'oggetto utente, per l'oggetto form attuale, per il livello della cache e per gli oggetti Propel. gli oggetti Doctrine.

Si possono anche usare strumenti di debug per la risposta e per i form.

Come per i test unitari, i test funzionali possono essere eseguiti uno alla volta o tutti insieme.

Si possono anche eseguire tutti i test insieme.

Plugin

Il framework symfony fornisce solo i fondamenti per le applicazioni web e si appoggia a dei plugin per aggiungere altre funzionalità. In questo tutorial, abbiamo parlato di sfGuardPlugin, sfFormExtraPlugin, e sfTaskExtraPlugin.

Un plugin deve essere attivato dopo l'installazione.

I plugin sono il modo migliore per contribuire al progetto symfony.

~Task~

La CLI di symfony fornisce molti task, e i più utili sono stati discussi in questo tutorial:

Si possono anche creare i propri task.

A presto

Imparare facendo pratica

Il framework symfony, così come ogni altro software, ha una curva di apprendimento. Nel processo di apprendimento, il primo passo è imparare da esempi pratici con un libro come questo. Il secondo passo è fare pratica. Niente potrà mai sostituire la pratica.

Questo è ciò che si può iniziare a fare oggi. Pensare al progetto web più semplice che possa fornire un qualche valore: un gestore di cose da fare, un semplice blog, un convertitore di tempo o di valuta, qualunque cosa... Sceglierne uno e iniziare a realizzarlo con le conoscenze attuali. Usare i messaggi di aiuto dei task per imparare le differenti opzioni, guardare il codice generato da symfony, usare un editor di testi che abbia il supporto all'auto-completamento del PHP, come Eclipse, e andare a vedere nella guida di riferimento tutte le configurazioni previste dal framework.

Fruire di tutto il materiale gratuito che si ha a disposizione per imparare di più su symfony.

La comunità

Prima di lasciarci, vorrei dire un'ultima cosa su symfony. Il framework ha un sacco di grandi feature e molta documentazione libera. Ma una delle più grandi risorse preziose che un progetto Open Source può avere è la sua community. E symfony ha una delle più incredibili e attive community del mondo. Se iniziate a usare symfony per i vostri progetti, considerate di unirvi alla community di symfony:

ORM