Clase de validación reutilizable para formularios en PHP
Clase 11 de 33 • Curso de PHP Avanzado
Resumen
Optimizar y reutilizar código es fundamental en la programación web. Crear una clase específica para validar formularios en PHP permite que tengas un sistema más profesional, limpio y fácil de mantener, impulsando una programación eficiente y ordenada. A continuación, conoce cómo implementar esta técnica en tus proyectos.
¿Qué es programar con intención en PHP?
Eliminar repeticiones y clarificar tu lógica es programar con intención. El concepto se refiere a que diseñes tu clase y estructura anticipando cómo deseas que funcione, aunque inicialmente la lógica interna no esté implementada. Simplemente defines las acciones que quieres lograr y luego completas su funcionalidad.
¿Cómo implementar una clase de validación reutilizable?
La creación de una clase validator en PHP ofrecerá métodos claros para comprobar cada campo del formulario según reglas predefinidas. Trabajaremos inicialmente con la declaración formal:
protected array $errores = [];
protected array $datos;
protected array $reglas;
public function __construct(array $datos, array $reglas)
{
$this->datos = $datos;
$this->reglas = $reglas;
}
¿Cómo estructurar y separar las reglas de validación?
La separación de reglas para su posterior validación debe ser precisa, puedes utilizar la función explode()
para separarlas mediante un carácter específico, generalmente una barra vertical |
:
$reglasSeparadas = explode('|', $reglas);
Si la regla cuenta con parámetros adicionales, nuevamente emplearemos explode()
, pero con array_pad()
para asegurar consistencia en la evaluación:
[$nombre, $parametro] = array_pad(explode(':', $regla), 2, null);
Esto garantiza que siempre tengas un arreglo con exactamente dos posiciones disponibles, perfecto para una evaluación precisa.
¿Qué lógica utilizar para evaluar los campos del formulario?
Para validar cada campo del formulario:
- Limpia el valor obtenido con funciones como
trim()
. - Evalúa si se cumplen o no las reglas definidas, empleando un método de evaluación condicional como una estructura
match
:
$error = match($nombre){
'requerido' => empty($valor) ? 'El campo es requerido' : null,
'minimo' => strlen($valor) < $parametro ? "Debe tener mínimo {$parametro} caracteres" : null,
'maximo' => strlen($valor) > $parametro ? "Debe tener máximo {$parametro} caracteres" : null,
'url' => filter_var($valor, FILTER_VALIDATE_URL) === false ? 'Debe ser una URL válida' : null,
default => null,
};
Si algún error se presenta, guardas inmediatamente el mensaje y detienes cualquier evaluación posterior con break
. Esto evita redundancias y mensajes confusos.
¿Cómo devolver los resultados de la validación?
Dos métodos importantes para manejar resultados:
- Método que indica si la validación fue exitosa:
public function pasa(): bool
{
return empty($this->errores);
}
- Método para devolver los errores obtenidos:
public function errores(): array
{
return $this->errores;
}
Estos métodos facilitan que tu validación sea intuitiva y clara a la hora de usarla en otros lugares de tu código.
¿Cómo aplicar esta clase en tus formularios?
Utiliza esta clase fácilmente en tu controlador o archivo de gestión del formulario de esta manera:
$validator = new Validator($_POST, [
'titulo' => 'requerido|minimo:3|maximo:190',
'url' => 'requerido|url|maximo:190',
'descripcion' => 'requerido|minimo:3|maximo:500'
]);
if ($validator->pasa()){
// Guarda los datos en la base de datos
}else{
// Procesa y muestra errores
$errores = $validator->errores();
}
Siguiendo estos lineamientos, obtendrás un código eficiente, reusable y fácil de mantener a largo plazo. ¡Anímate a aplicar estos consejos para mejorar tus proyectos en PHP! ¿Tienes más dudas sobre este proceso? Déjame tus comentarios debajo.