Visto che un esempio vale più di mille parole, vedremo ora come symfony gestisce lo scaffolding, ovvero la generazione delle classi del modello a partire da un semplice schema. Supponiamo di dover sviluppare un forum, avremo uno schema come quello seguente:
User:
id: ~
name: { type: varchar, required: true }
password: { type: varchar, required: true }
Forum:
id: ~
title: { type: varchar, required: true }
is_open: { type: boolean, default: true }
Topic:
id: ~
forum_id: ~
user_id: ~
title: { type: varchar, required: true }
Message:
id: ~
topic_id: ~
user_id: ~
title: { type: varchar, required: true }
text: { type: longvarchar, required: true }
Anche senza conoscere la sintassi specifica di questo schema, scritto in YAML, la composizione delle entità e delle relazioni dovrebbe essere facilmente intuibile da chiunque: ci sono dei forum, in cui vengono scritti dei topic, che sono composti da messaggi, che sono scritti da utenti. Per i campi le cui caratteristiche sono omesse (quelli seguiti dal segno di tilde), symfony provvederà a un calcolo automatico (per esempio, i campi "id" sono degli interi con auto-increment, i campi come "forum_id" sono chiavi esterne)
Con un paio di comandi eseguiti da terminale, symfony genererà, partendo da tale schema:
Con un altro comando è possibile generare un'intera interfaccia di amministrazione, basata sulle classi e sui form di cui sopra. In questo modo non ci sarà alcun bisogno di perder tempo in quei compiti ripetitivi e noiosi, quali scrivere le query di base per le esigenze più comuni relative all'interazione col database. Tuttavia, sarà sempre possibile modificare le classi generate automaticamente, per aggiungere tutti quei metodi necessari alla personalizzazione. In caso di modifica "in corsa" al database, sarà sufficiente modificare lo schema e rigenerare le classi. Le personalizzazione già fatte non saranno sovrascritte. Come accennato inizialmente, questo consente di concentrarsi sui problemi e sulle logiche specifiche dell'applicazione da implementare.
Il suddetto esempio ovviamente non esaurisce tutte le potenzialità di symfony ma permette di intuire come sia sufficiente un minimo sforzo per ottenere fin da subito risultati considerevoli. Per approfondire l'utilizzo di symfony basta consutare l'estesa documentazione disponibile su www.symfony-project.org.