En aplicaciones Laravel solemos apoyarnos en Form Requests para validar datos de entrada. Esta técnica mantiene los controladores limpios y garantiza que la información llegue íntegra a la lógica de negocio.
El problema aparece después de validar cuando muchos equipos siguen pasando arrays crudos o el objeto request a servicios, repositorios o jobs. Esto deriva en código frágil y difícil de mantener, con mayor acoplamiento y menor legibilidad.
La solución elegante son los DTOs Data Transfer Objects. Un DTO es un objeto simple, estructurado, tipado e inmutable que transporta datos de forma segura y clara a través de la aplicación. Al combinarlos con Form Requests obtenemos un flujo coherente desde la validación hasta la capa de servicios.
Flujo de registro de usuarios
Imagina un formulario con name, email y password. Así es como puedes integrar DTOs en tu Form Request sin depender de arrays:
Paso 1 Form Request con método dto
En lugar de devolver inputs sueltos, añade un método dto que construya un objeto de datos de registro a partir de los campos validados. El Form Request se limita a autorizar, validar y transformar los datos en un DTO listo para usar.
Paso 2 Definición del DTO
Crea una clase de datos de registro con propiedades de solo lectura para name, email y password. Este objeto representa datos validados e inmutables, con tipos explícitos que ayudan al autocompletado del IDE y a detectar errores temprano.
Paso 3 Uso en el controlador
El controlador recibe el Form Request, invoca el método dto y delega en un servicio de registro que opera con el DTO. El controlador deja de manipular arrays o request y se centra en orquestar el flujo.
Paso 4 Lógica en el servicio
El servicio consume el DTO y crea el usuario aplicando el hash de la contraseña. No sabe nada de HTTP ni de la forma en que llegaron los datos, lo que lo hace reutilizable en comandos de consola, jobs o pruebas.
Otro caso de uso Checkout de pagos
Para un proceso de pago con amount, currency y payment_method, reemplaza llamadas como request only y arrays anónimos por un DTO de checkout. El servicio de pagos procesa ese DTO con claridad, menos errores y mayor coherencia.
Beneficios clave de usar DTOs con Form Requests
- Claridad request dto es más expresivo que seleccionar campos con only
- Tipado y autocompletado reducen errores y mejoran la navegación del código
- Inmutabilidad los datos no cambian después de crearse
- Separación de responsabilidades controladores orquestan, servicios resuelven lógica, DTOs transportan datos
- Testeabilidad y reutilización servicios desacoplados de HTTP se prueban y reutilizan mejor
Cómo lo impulsamos en Q2BSTUDIO
En Q2BSTUDIO ayudamos a equipos a construir soluciones robustas con Laravel aplicando patrones como DTOs, validación explícita y arquitectura limpia en proyectos de software a medida y aplicaciones a medida. Además, integramos inteligencia artificial e IA para empresas mediante agentes IA, reforzamos la ciberseguridad con auditorías y pentesting, diseñamos estrategias en servicios cloud AWS y Azure, y potenciamos la toma de decisiones con servicios inteligencia de negocio y Power BI. También impulsamos la automatización de procesos para acelerar la entrega de valor y reducir errores operativos.
Conclusión
Los DTOs parecen un detalle menor, pero elevan de forma notable la mantenibilidad y legibilidad de tus proyectos Laravel. La próxima vez que crees un Form Request no te quedes solo en validar transforma esos datos en un DTO y haz que tus controladores y servicios trabajen con contratos claros y estables. Tu yo del futuro y tu equipo lo agradecerán.