Symfony ermöglicht die Umsetzung des Model-View-Controller-Ansatzes (MVC). Dieses Architekturmuster unterteilt Applikationen in die drei Bereiche
- Daten und Kernfunktionalität (Model),
- visuelle Darstellung der erzeugten Daten (View)
- und Verarbeitung der Nutzereingaben (Controller).
Das MVC-Konzept sorgt für einen übersichtlichen, gut strukturierten Programmcode und eine hohe Flexibilität der verschiedenen Komponenten, die dank des Konzepts ausgetauscht und wiederverwendet werden können, da sie nicht an konkrete Eingabedaten gebunden sind. An dieser Stelle muss jedoch darauf hingewiesen werden, dass Symfony nicht zur ausgerufenen Riege der MVC-Frameworks zählt und keine integrierte Model-Komponente beinhaltet. Legen Sie ein neues Symfony-Projekt an, fehlt konsequenterweise auch der typische Model-Ordner. Mithilfe zusätzlicher ORM-Bibliotheken (Object Relational Mapper) wie die von SensioLabs empfohlene Doctrine oder Propel realisieren Sie die Objektspeicherung in Datenbanksysteme allerdings problemlos auf eigene Faust.
Um die Präsentationsschicht (View) Ihrer Webanwendung zu erstellen, nutzen Sie das Templating-Modul und kreieren entsprechende Templates, die Sie mithilfe sogenannter Helper (PHP-Objekte) durch spezifische Funktionen erweitern können. Die Controller-Ebene trägt standardmäßig die Bezeichnung index.php (zu finden im Ordner „web“). Die Nutzereingaben selbst heißen in Symfony wie auch bei vielen anderen Frameworks „Actions“.