Symfony 8 elimina la configuración XML, YAML sigue siendo el estándar
Symfony 8.0, publicado el 27 de noviembre de 2025, elimina por completo el cargador de configuración XML para servicios y rutas.
YAML sigue soportado y gana herramientas de JSON Schema, mientras un nuevo formato PHP basado en arrays reemplaza los builders de configuración fluidos obsoletos.
Symfony 8.0 se publicó el 27 de noviembre de 2025 junto con la versión LTS 7.4. Ambas comparten el mismo código, pero la 8.0 elimina todas las funciones marcadas como obsoletas en la 7.4. La eliminación más visible es el formato de configuración XML.
El XmlFileLoader, que leía services.xml en el componente DependencyInjection y routes.xml en el componente Routing, fue marcado como obsoleto el 17 de octubre de 2025 mediante la pull request #60568 de Mathieu Lechat. Symfony 8.0, que requiere PHP 8.4, elimina el cargador de ambos componentes. Las aplicaciones y bundles que aún distribuyen configuración XML dejan de cargar de inmediato.
YAML no se ve afectado. El equipo de Symfony confirmó que no hay planes de deprecar YAML, y sigue siendo el formato por defecto para proyectos nuevos y recetas Flex. Symfony 7.4 también añadió soporte de JSON Schema para servicios, rutas, validación y serialización, de modo que editores como PhpStorm ofrecen ahora autocompletado y validación en YAML mediante un comentario de esquema.
Los builders de configuración PHP fluidos introducidos en Symfony 5.3 también quedaron obsoletos en la 7.4. Nicolas Grekas explicó que las clases fluidas imponen una única forma canónica por árbol de configuración, lo que bloquea las actualizaciones automáticas de recetas. El reemplazo es un formato de arrays simples envuelto en App::config(), con Routes::config() para el enrutamiento, incluidos bloques de entorno como when@dev. Estos arrays llevan metadatos de forma legibles por PHPStan, Psalm y PhpStorm.
Symfony genera esas formas en config/reference.php, que los equipos commitean y pueden autocargar mediante una entrada classmap en composer.json. Los comentarios del blog señalaron dos problemas: diffs ruidosos en los pull requests cada vez que cambian las dependencias, y al menos un caso en el que un patrón glob como **/*.graphql rompió la sintaxis generada.
El propio Symfony indica que el formato de arrays aún no es el recomendado. El soporte de los analizadores estáticos para formas de arrays complejas es incompleto, y Symfony Flex hoy solo escribe recetas YAML. El consejo es adoptar el formato archivo por archivo.
La ruta de migración sugerida: inventariar los archivos XML de tu código, actualizar primero a la 7.4 y activar el registro de deprecaciones con symfony/phpunit-bridge, convertir services.xml y routes.xml a YAML, escribir la configuración nueva en el formato de arrays sin reescribir archivos estables, y luego pasar a la 8.0 cuando el registro de deprecaciones se mantenga limpio.
Los bundles de terceros son el mayor riesgo, ya que XML fue durante años el formato oficialmente recomendado para autores de bundles. Un bundle que distribuye Resources/config/services.xml no arranca en la 8.0. Las opciones: esperar una versión compatible, usar la herramienta comunitaria en github.com/GromNaN/symfony-config-xml-to-php y enviar una pull request, hacer fork del bundle, o quedarse en 7.4 LTS con sus cuatro años de soporte de seguridad. Una prueba en una rama separada con composer.json en ^8.0 revela exactamente qué dependencias bloquean la actualización.
Tribuna de lectores
Aún no hay aportaciones — abre el debate.
Inicia la conversación
Sin cuenta ni contraseña — introduce tu correo y te enviamos un enlace de acceso de un solo uso. ¿Primera vez? Todo se configura automáticamente.
Tu valoración se aplicará automáticamente al iniciar sesión.
Revisa tu bandeja de entrada
Hemos enviado un enlace de acceso a …. Ábrelo en este dispositivo — esta pestaña te conectará automáticamente.
¿No llega nada? Mira en la carpeta de spam — y marca el correo como «No es spam» para que la próxima vez llegue directo.