Willkommen › Software Architecture › MVC
Software Architecture · MVC
MVC: Ordnung zwischen Daten, Logik und Oberfläche.
Model-View-Controller trennt, was eine Anwendung weiß, was sie zeigt und wie sie auf Eingaben reagiert. Das Ergebnis: Code, den auch das nächste Team noch versteht.
Das Prinzip
Drei Rollen, klare Zuständigkeiten.
Model enthält die Daten und Geschäftsregeln – etwa „eine Bestellung über 50 € ist versandkostenfrei“.
View kümmert sich nur um die Darstellung: HTML, Templates, Komponenten.
Controller nimmt Anfragen entgegen, ruft das Model auf und wählt die passende View.
So fließt eine Anfrage durch MVC
Im Code
Ein Controller, der nicht alles selbst macht.
Der häufigste Fehler in MVC-Projekten ist der „Fat Controller“: SQL, Berechnungen und HTML in einer Datei. Wir halten Controller dünn und verlagern Logik in Models und Services.
So lassen sich Regeln einzeln testen und die Oberfläche austauschen, ohne die Geschäftslogik anzufassen.
final class BestellungController
{
public function __construct(
private BestellungRepository $bestellungen,
private View $view,
) {}
public function zeigen(int $id): Response
{
$bestellung = $this->bestellungen->finde($id); // Model
return $this->view->render('bestellung/zeigen', [ // View
'bestellung' => $bestellung,
]);
}
}Einsatz
Wo MVC zuhause ist.
Laravel & Symfony
Die großen PHP-Frameworks sind konsequent nach MVC aufgebaut.
Ruby on Rails & Django
Auch in Ruby und Python ist MVC (bzw. MTV) der Standard.
WordPress-Plugins
Größere Plugins strukturieren wir ebenfalls nach MVC statt in einer riesigen Datei.
MVC vs. Clean Architecture
Wann MVC reicht – und wann nicht.
MVC reicht
Für Websites, CRUD-Anwendungen und überschaubare Shops ist MVC schnell und verständlich.
Clean Architecture
Bei viel Fachlogik trennen wir zusätzlich Domäne, Anwendungsfälle und Infrastruktur.
Schrittweise
Ein bestehendes Projekt bauen wir nicht neu, sondern refaktorieren Stück für Stück.
Im Detail
MVC in der Praxis – worauf wir achten.
- Routing – klare Zuordnung von URLs zu Controller-Aktionen
- Dünne Controller – nur Anfrage annehmen, Model aufrufen, View wählen
- Fachlogik im Model – Regeln wie Rabatte oder Versandkosten an einer Stelle
- Services – komplexe Abläufe in eigenen Klassen statt im Controller
- Repositories – Datenbankzugriff gekapselt und austauschbar
- Templates – Views ohne SQL und ohne Geschäftslogik
- Validierung – Eingaben prüfen, bevor sie das Model erreichen
- Fehlerbehandlung – einheitliche Fehlerseiten und Logging
- Tests – Models und Services einzeln testbar
- Konventionen – feste Ordner- und Namensregeln für das ganze Team
Du brauchst uns, wenn …
Sauberer Code ist kein Luxus.
Dein Code ist gewachsen – und unübersichtlich geworden?
Wir schauen uns deine Anwendung an und zeigen dir, wo sich Aufräumen am meisten lohnt.
