Guía de migración: 9.8.4 → 9.8.5
La versión 9.8.5 mejora el manejo del método run() de los componentes y añade el nuevo pipe de plantilla plain.
Resumen
Añadido
- Los métodos
run()de los componentes ahora pueden declararse sin parámetros. - Nuevo pipe de plantilla
plainpara cadenas seguras para JSON sin codificación URL. - Esta guía de migración.
Modificado
- Los parámetros DTO de los métodos
run()ahora se detectan por herencia deODTOen lugar de por su namespace. - Las firmas de los métodos
run()de los componentes ahora se validan explícitamente.
Eliminado
- No se ha eliminado nada.
Firmas del método run() de los componentes
Los componentes pueden utilizar exactamente una de las siguientes firmas:
public function run(): void
public function run(ORequest $req): void
public function run(MyDTO $dto): void
En el último caso, MyDTO debe extender ODTO.
La detección de los DTO se basa ahora en la herencia de ODTO, no en el namespace de la clase. Por tanto, las clases DTO pueden estar ubicadas en cualquier parte de la aplicación.
El resto de firmas no son válidas. Un método run() puede recibir como máximo un parámetro, que debe ser un ORequest no nullable o una clase que extienda ODTO.
Nuevo pipe de plantilla plain
El nuevo pipe plain permite mostrar cadenas en plantillas JSON sin aplicar codificación URL:
{{ user.name | plain }}
Por ejemplo:
John Doe → "John Doe"
Dijo "hola" → "Dijo \"hola\""
El pipe utiliza una codificación segura para JSON, conserva los caracteres Unicode y las barras sin escapar, y escapa correctamente las comillas y otros caracteres especiales para JSON.
Los valores nulos se representan como null.
El pipe string existente continúa aplicando urlencode().
Impacto en proyectos existentes
Los componentes existentes que utilizan run(ORequest $req) o un DTO que extienda ODTO siguen siendo compatibles.
Los DTO ubicados en el namespace convencional App\DTO continúan funcionando sin cambios.
Las aplicaciones pueden utilizar ahora métodos run() sin parámetros cuando no sea necesario acceder a los datos de la solicitud.
Compatibilidad con versiones anteriores
No es necesario realizar cambios en aplicaciones que utilicen parámetros ORequest o ODTO válidos.
Las aplicaciones que contengan firmas run() no admitidas deben actualizarlas a una de las formas compatibles.
Acción requerida por el desarrollador
En aplicaciones típicas no se requiere ninguna acción. Revisa las firmas personalizadas de run() si utilizan parámetros sin tipo, nullable, union types, tipos no admitidos o múltiples parámetros.
Notas
No se requieren cambios de configuración, base de datos ni CLI.