In Symfony bedeutete das Registrieren von Event Listenern, Voters, Commands und Twig-Extensions lange: Interface implementieren und separat in services.yaml einen Tag-Eintrag schreiben. Das autoconfigure-Feature erkennt bekannte Interfaces automatisch und vergibt die notwendigen DI-Tags, ohne dass ein einziger Tag manuell geschrieben werden muss.
Webpack konfigurieren, npm-Pakete warten, Build-Pipelines debuggen — das kostet in Symfony-Projekten oft mehr Zeit als die eigentliche Frontendlogik. Symfony AssetMapper macht den Bundler für die meisten Projekte überflüssig: Import Maps, automatisches Versioning und ES-Module direkt aus PHP, ohne Node.js-Build-Schritt.
Die Wahl zwischen EasyAdmin 4 und Sonata Admin entscheidet darüber, wie viel Konfigurationsaufwand, Customizing-Freiheit und Lernkurve euer Team für das Backend einplanen muss. Beide Lösungen sind für Symfony gebaut — aber mit grundlegend verschiedenen Philosophien und Zielgruppen.
Wer für jede Eingabevariante eine eigene Testmethode schreibt, vervielfacht Wartungsaufwand statt Testabdeckung. Der Data Provider von PHPUnit trennt Testlogik von Testdaten und macht aus zehn fast identischen Methoden eine einzige, klar lesbare Testmethode mit einem Dutzend Datensätzen.
Die eingebauten Symfony Validator-Constraints decken Standardfälle ab – aber Geschäftslogik wie eindeutige Slugs, domänenspezifische Formate oder Abhängigkeiten zwischen Feldern erfordern eigene Constraint-Klassen. Wer sie richtig implementiert, hält Validierungslogik testbar, wiederverwendbar und sauber von Controllern getrennt.
Encore zu AssetMapper zu migrieren bedeutet nicht, das Frontend neu zu schreiben, sondern Entrypoints, npm-Pakete und Sass-Dateien Stück für Stück auf Symfonys eingebauten Importmap-Mechanismus zu übertragen, ohne dass Node.js für den Produktions-Build noch zwingend nötig ist.
Suchfelder, die während der Eingabe Ergebnisse laden. Formulare, die Felder in Echtzeit validieren. Warenkorb-Komponenten, die auf Klicks reagieren ohne Seitenreload. Das alles mit PHP und Twig — Symfony UX Live Component macht PHP-Komponenten reaktiv, ohne React oder Vue zu brauchen.
Ein Test, der prüft, ob eine Nachricht auf einem Bus gelandet ist, sagt nichts darüber aus, ob der zugehörige Handler das Richtige tut. Mit InMemoryTransport und TraceableMessageBus lassen sich Symfony Messenger Handler synchron, deterministisch und ohne RabbitMQ oder Redis in der Pipeline testen.
Doctrine Repositories mit reinen Mocks zu testen prüft selten die eigentliche Query. Eine In-Memory-SQLite-Datenbank führt DQL und Query-Builder-Aufrufe echt aus, ganz ohne Datenbankserver, und macht Repository-Tests in Millisekunden statt Sekunden lauffähig.
Die hexagonale Architektur — auch bekannt als Ports and Adapters — befreit die Domänenlogik von der Kopplung an Frameworks, Datenbanken und externe Services. In Symfony lässt sie sich mit PHP-Interfaces als Ports und Symfony-Services als Adapters präzise umsetzen: vollständig testbarer Domänencode ohne ein einziges Framework-Import in der Kernlogik.