Skip to content

9.5.0 - Nuevo sistema de DTOs

Choose a tag to compare

@osumionline osumionline released this 21 Jan 22:15
· 146 commits to main since this release

Nuevo sistema de DTOs.

Hasta ahora los DTOs eran simples clases donde almacenar variables con metodos get/set y al implementar la interfaz ODTO había que añadirles métodos load y isValid.

A partir de esta versión, siguiendo el estilo de las clases de modelo, ahora los DTOs son clases en los que usando etiquetas decoradoras se añade metainformación de cada campo haciendo que ya no sean necesarios los métodos get/set para cada campo. Ahora en lugar de implementar una interfaz, extienden una clase ODTO que ya incluye un método load y un método isValid.

En estos decoradores se puede indicar si un campo es obligatorio, si un campo depende de otro o si un campo debe rellenarse a partir de un filtro.

class UserDTO extends ODTO{
	#[ODTOField(
		required: true  // Campo obligatorio
	)]
	public ?int $id_user = null;

	#[ODTOField(
		requiredIf: 'id_user' // Campo obligatorio en caso de que el campo "id_user" tenga valor
	)]
	public ?int $name_user = null;
}

El método isValid simplemente comprueba que los campos obligatorios hayan sido rellenados, en caso de querer hacer validaciones personalizadas siempre se pueden añadir métodos extra en la clase.