€0.00 — free as in speechtonight's forecast: clear skies over production Cache: warm · Deploys: fair, 0% rollbacks expectedset by moonlight, shipped before dawn · deploy freely Page A2

The Daily Commit The Nightly Build

Dev news, typeset daily — PHP · AI · The Wider Stack

The developer's evening paper — PHP · AI · The Wider Stack

jueves, 20 de agosto de 2026 Vol. I — No. 373 · Edición matinalEdición vespertina EN DE FR ES

PHP · Lanzamientos

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.

seleccionado por Sönke

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.

Leer la fuente original (en inglés) ↗

Valora este artículo: 0

Tribuna de lectores

Aún no hay aportaciones — abre el debate.

The Daily CommitThe Nightly Build — Page A1