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 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 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 a 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 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 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 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 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 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, e 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 --and-load
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.
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 comunità. E symfony ha una delle più incredibili e attive comunità del mondo. Se iniziate a usare symfony per i vostri progetti, considerate di unirvi alla comunità di symfony:
- Iscrivendovi alla mailing list degli utenti
- Iscrivendovi alla mailing list italiana
- Iscrivendovi al feed del blog ufficiale
- Iscrivendovi al feed di symfony planet
- Chattando sul canale IRC #symfony su freenode
This work is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported License license.