Oggi è l'ultima fermata del nostro viaggio nel meraviglioso mondo di symfony. Durante questi ventitré giorni, avete imparato ad 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 symfony è un insieme di sotto-framework coesi ma disaccoppiati, che formano un completo framework MVC (Modello, Vista, Controllore).
Prima di pensare al codice, prendetevi un po' di tempo per leggere
la storia e la filosofia di symfony.
Quindi, verificate i prerequisiti del framework,
ed usate lo script check_configuration.php
per validare la vostra configurazione.
Infine, installate symfony. Dopo un po' di tempo forse vorrete anche aggiornare all'ultima versione del framework.
Il framework fornisce anche degli strumenti per facilitare il deployment.
Il Modello
La parte di symfony del Modello può essere fatta con l'aiuto di Doctrine. Basato sulla descrizione del database, genera delle classi per oggetti, form, e filtri. Doctrine 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 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 ad un'altra, oppure rinviata.
Configurazione
Il framework symfony rende facile avere diverse impostazioni di configurazione per diversi 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:
app.yml
cache.yml
databases.yml
factories.yml
generator.yml
routing.yml
schema.yml
security.yml
settings.yml
view.yml
I file di configurazione usano per lo più il formato YAML.
Invece di usare la struttura predefinita di cartelle ed 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 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, ed 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 Doctrine, il framework dei form rende anche facile 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 ed 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 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 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, ed i più utili sono stati discussi in questo tutorial:
app:routes
cache:clear
configure:database
generate:project
generate:app
generate:module
help
i18n:extract
list
plugin:install
plugin:publish-assets
project:deploy
doctrine:build-all
doctrine:build-all-reload
doctrine:build-forms
doctrine:build-model
doctrine:build-sql
doctrine:data-load
doctrine:generate-admin
doctrine:generate-module
doctrine:insert-sql
test:all
test:coverage
test:functional
test:unit
Si possono anche creare i propri task.
Riconoscimenti
Scrivere un tutorial come Jobeet è sia eccitante che sfibrante. Si spendono ore ed ore a cercare di immaginare come veicolare il messaggio, come spiegare i concetti, come fornire esempi semplici ma sensati e riusabili.
Scrivere un tutorial così grosso è semplicemente impossibile senza la gente che ti supporta durante il processo. Per Jobeet, io (Fabien Potencier) ho avuto la fortuna di beneficiare di revisori di prima qualità. Essi sono tutti parte dell'avventura di symfony e vorrei ringraziarli tutti per il tempo che hanno dedicato al progetto Jobeet.
Kris Wallsmith, il nostro manager della community e release manager dell'imminente symfony 1.3, ha preso il tempo di correggere il mio Inglese poco perfetto. Siccome questo tutorial è stato pubblicato su base giornaliera e siccome io vivo in Francia e lui negli Stati Uniti, si è alzato molto presto ogni mattina questo mese, inclusi i fine settimana, per leggere e correggere ogni giorno.
Stefan Koopmanschap, uno dei più attivi promotori di symfony, ha assunto la responsabilità di mantenere il repository Subversion. Grazie al suo lavoro, si può vedere il codice ed iniziare a leggere il tutorial per un qualsiasi giorno.
Fabian Lange, il release manager di symfony 1.2, nonché "ragazzo" symfony, ha letto il libro con una prospettiva Windows ed ha cercato di essere un lettore neofita. A margine, ha comprato da poco un Mac, quindi avremo bisogno di qualcun altro che si prenda la responsabilità del "ragazzo Windows".
Jonathan Wage, lo sviluppatore principale di Doctrine, ha speso del tempo per creare un'edizione Doctrine del tutorial. Grazie ai suoi grandi sforzi, si può scegliere tra Propel e Doctrine come ORM principale per symfony e godere ugualmente dello stesso tutorial.
Pascal Borreli, un frequentatore del canale IRC francese di symfony, ed il membro più amichevole della community di symfony, ha letto il tutorial capitolo dopo capitolo alla velocità della luce. Il suo continuo supporto e le sue parole gentili mi hanno mantenuto nell'umore giusto per scrivere questo tutorial dall'inizio alla fine.
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. Pensate 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... Sceglietene uno e iniziate a realizzarlo con le conoscenze che avete oggi. Usate i messaggi di aiuto dei task per imparare le differenti opzioni, guardate il codice generato da symfony, usate un editor di testi che abbia il supporto all'auto-completamento del PHP come Eclipse, e andate a vedere nella guida di riferimento tutte le configurazioni previste dal framework.
Fruite di tutto il materiale gratuito che avete a vostra 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 ed attive community del mondo. Se iniziate ad usare symfony per i vostri progetti, considerate di unirvi alla community di symfony:
- Iscrivendovi alla mailing list degli utenti
- Iscrivendovi al feed del blog ufficiale
- Iscrivendovi al feed di symfony planet
- Chattando sul canaleIRC #symfony su freenode
Joyeux Noël !
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.