Introducción

1

Desarrollo de Aplicaciones en Laravel con TDD y PHP Unit

2

Desarrollo de Proyectos con TDD en Laravel y Testing PHP

Proyecto

3

Instalación y configuración inicial de proyectos en Laravel

4

Configuración de Relaciones y Pruebas Unitarias en Laravel

5

Configuración de Relaciones en Laravel usando Testing

6

Protección de Rutas en Laravel con Middleware de Autenticación

7

Pruebas Automatizadas para Registro y Redirección en Base de Datos

8

Configuración de Actualización de Registros con Pruebas en PHP

9

Validación de Datos en Controladores: Configuración y Pruebas

10

Eliminación de Registros en Base de Datos con PHP y Tests

Póliticas de Acceso

11

Configuración de Políticas de Acceso en Repositorios

12

Políticas de Acceso y Eliminación de Repositorios en PHP

13

Configuración de Acceso a Repositorios Propios en Aplicaciones Web

14

Configuración del Método Show en Controladores PHP

Vistas del proyecto

15

Formulario de Edición con Diseño y Tests en Laravel

16

Testing de Formularios en PHP: Creación y Validación de Vistas

17

Configuración de Controladores y Vistas en Laravel para el Área Pública

18

Diseño Web con Tailwind CSS: Mejora de Apariencia y Formato

19

Pruebas y Configuración de Seeders en Proyectos Laravel

Refactorización

20

Refactorización de Código con Validación en PHP

21

Refactorización de Políticas de Acceso en Laravel

22

Configuración de Botones para Repositorios en Proyectos Web

Conclusión

23

Importancia de las Pruebas en Desarrollo de Software

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Refactorización de Código con Validación en PHP

20/23
Recursos

¿Qué es la validación en programación y por qué es importante?

La validación en programación es crucial para garantizar que los datos que ingresan a un sistema cumplan con los criterios establecidos antes de ser procesados. Esto asegura que las aplicaciones funcionen correctamente y minimiza el riesgo de errores y vulnerabilidades de seguridad. La validación puede adaptarse a diferentes contextos, desde verificar que los formularios de entrada no contengan datos inválidos o peligrosos, hasta asegurar que los objetos y las funciones se comporten según lo esperado. Además, mantener un código bien estructurado y validado facilita su mantenimiento y mejora la calidad del software.

¿Cómo mejorar el código mediante la refactorización?

La refactorización del código es una técnica esencial en el desarrollo de software que permite limpiar y optimizar el código sin cambiar su funcionalidad externa. Este proceso se enfoca en reducir la complejidad y mejorar la comprensión del código, al tiempo que se mantiene la seguridad y el funcionamiento óptimo del sistema.

Creación de un archivo de validación externo

En el proceso de refactorización, podemos externalizar la validación a un archivo separado, mejorando así la estructura del código. Este es un proceso simple en el que separas las reglas de validación en un archivo propio para mejorar su localización y mantenimiento.

  1. Crear el archivo: Utiliza herramientas como PHP Artisan:

    php artisan make:request <nombre-de-la-acción-Request>
    

    Esto genera un nuevo archivo especialmente para el manejo de validaciones.

  2. Incorporar las reglas de validación: Dentro del nuevo archivo, define las reglas de validación necesarias. Esto es especialmente útil para grandes conjuntos de validaciones:

    public function rules()
    {
        return [
            'campo' => 'reglas',
            ...
        ];
    }
    

Integración del archivo de validación en el controlador

La integración del nuevo archivo de validación con el controlador es un paso crucial para asegurar un flujo de validación coherente. Sigamos los pasos:

  1. Importar el nuevo request: En el controlador, debes asegurarte de importar el archivo de validación:

    use App\Http\Requests\<nombre-de-la-acción-Request>;
    
  2. Aplicar la validación: Reemplaza las implementaciones anteriores de validaciones con la nueva referencia al Request:

    public function store(<nombre-de-la-acción-Request> $request)
    {
        // Código para manejar el almacenado
    }
    

Esta refactorización no solo organiza mejor el código, sino que también facilita futuras expansiones de las reglas de validación.

¿Qué rol juegan los tests en la refactorización del código?

Los tests son fundamentales para garantizar que el proceso de refactorización no rompa las funcionalidades actuales del software. Permiten modificar el código con la confianza de saber que su funcionalidad se mantiene intacta. La estrategia incluye:

  • Mantener los tests existentes. No alteres los tests antes de refactorizar. Al mantenerlos separados del código principal, puedes ejecutar rápidamente los tests después de las modificaciones para verificar su integridad.

  • Ejecutar y revisar: Ejecuta los tests con frecuencia durante la refactorización:

    php artisan test
    

    Esto se asegurará de que todos los métodos sigan funcionando correctamente incluso después de los cambios en el código.

Al adoptar una práctica sólida de testing y refactorización, lograrás un código más limpio, manejable y confiable. Y recuerda, ¡la práctica y revisión constante son clave para dominar estas técnicas!

Aportes 4

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

php artisan make:request RepositoryRequest
php artisan test

Modificados:

  • app/Http/Controllers/RepositoryController.php
  • app/Http/Requests/RepositoryRequest.php

Otros parámetros útiles de validación (que he utilizado) son uniquey exists, les dejo la docu de Laravel para validar

https://laravel.com/docs/8.x/validation#introduction

Para este ejemplo en particular las validaciones hechas en los metodos **store y update** son las mismas, por ello se crea **RespositoryRequest** para ser usado en ambos metodos. En muchos otros casos las validaciones no coinciden y el store puede tener cosas que el update no tiene. En todo caso la recomendacion que nos da laravel es nombrar los request asi: * **StoreRepositoryRequest** * **UpdateRepositoryRequest** **<u>VerboNombremodeloRequest</u>**

cabe aclarar que esa validación también podría ir en un middleware pero ya depende de las cauisticas.