Osumi Framework
es en eu v9.10.0 GitHub

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

Modificado

Eliminado


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.