Symfony 8 entfernt XML-Konfiguration, YAML bleibt Standard
Symfony 8.0, veröffentlicht am 27.
November 2025, entfernt den XML-Konfigurationsloader für Services und Routen vollständig. YAML bleibt unterstützt und erhält JSON-Schema-Tooling, während ein neues array-basiertes PHP-Format die veralteten Fluent-Config-Builder ersetzt.
Symfony 8.0 erschien am 27. November 2025 zusammen mit dem LTS-Release 7.4. Beide teilen denselben Codebestand, doch 8.0 entfernt alle in 7.4 als veraltet markierten Funktionen. Die sichtbarste Entfernung ist das XML-Konfigurationsformat.
Der XmlFileLoader, der services.xml in der DependencyInjection-Komponente und routes.xml in der Routing-Komponente las, wurde am 17. Oktober 2025 über Pull Request #60568 von Mathieu Lechat als veraltet markiert. Symfony 8.0, das PHP 8.4 voraussetzt, löscht den Loader aus beiden Komponenten. Anwendungen und Bundles, die noch XML-Konfiguration ausliefern, laden sofort nicht mehr.
YAML ist nicht betroffen. Das Symfony-Team bestätigte, dass keine YAML-Deprecation geplant ist, und es bleibt der Standard für neue Projekte und Flex-Rezepte. Symfony 7.4 führte zudem JSON-Schema-Unterstützung für Services, Routen, Validierung und Serialisierung ein, sodass Editoren wie PhpStorm nun Autovervollständigung und Validierung in YAML über einen Schema-Kommentar bieten.
Die in Symfony 5.3 eingeführten Fluent-PHP-Config-Builder wurden in 7.4 ebenfalls als veraltet markiert. Nicolas Grekas erklärte, dass die Fluent-Klassen eine einzige kanonische Form pro Config-Baum erzwingen, was automatische Rezept-Updates blockiert. Der Ersatz ist ein einfaches Array-Format, verpackt in App::config(), mit Routes::config() für Routing inklusive Umgebungsblöcken wie when@dev. Diese Arrays tragen Array-Shape-Metadaten, die von PHPStan, Psalm und PhpStorm gelesen werden können.
Symfony generiert die Shapes in config/reference.php, das Teams committen und über einen Classmap-Eintrag in composer.json autoloaden können. In Blog-Kommentaren wurden zwei Probleme genannt: unübersichtliche Diffs in Pull Requests bei jeder Abhängigkeitsänderung und mindestens ein Fall, in dem ein Glob-Muster wie **/*.graphql die generierte Syntax beschädigte.
Symfony selbst sagt, dass das Array-Format noch nicht das empfohlene ist. Die Unterstützung komplexer Array-Shapes durch statische Analyse ist unvollständig, und Symfony Flex schreibt heute nur YAML-Rezepte. Die Empfehlung lautet, das Format Datei für Datei einzuführen.
Der vorgeschlagene Migrationspfad: XML-Dateien im eigenen Code inventarisieren, zuerst auf 7.4 upgraden und Deprecation-Logging über symfony/phpunit-bridge aktivieren, services.xml und routes.xml nach YAML konvertieren, neue Konfiguration im Array-Format schreiben ohne stabile Dateien umzuschreiben, dann auf 8.0 wechseln, sobald das Deprecation-Log sauber bleibt.
Bundles von Drittanbietern sind das größere Risiko, da XML jahrelang das offiziell empfohlene Format für Bundle-Autoren war. Ein Bundle, das Resources/config/services.xml ausliefert, bootet unter 8.0 nicht mehr. Optionen: auf ein kompatibles Release warten, das Community-Tool unter github.com/GromNaN/symfony-config-xml-to-php nutzen und einen Pull Request einreichen, das Bundle forken oder auf 7.4 LTS mit seinen vier Jahren Sicherheitsupport bleiben. Ein Test auf einem separaten Branch mit composer.json auf ^8.0 zeigt genau, welche Abhängigkeiten das Upgrade blockieren.
Leserforum
Noch keine Beiträge — eröffne die Debatte.
Starte die Diskussion
Kein Konto, kein Passwort nötig — gib einfach deine E-Mail-Adresse ein, wir senden dir einen einmaligen Anmelde-Link. Beim ersten Mal bist du damit automatisch angemeldet.
Deine Bewertung wird nach der Anmeldung automatisch übernommen.
Schau in dein Postfach
Wir haben einen Anmelde-Link an … gesendet. Öffne ihn auf diesem Gerät — dieser Tab meldet dich automatisch an.
Nichts angekommen? Wirf einen Blick in den Spam-Ordner — und markiere die Mail dort als „Kein Spam“, dann landet sie künftig direkt im Postfach.