Respect/Validation PHP: guía completa con ejemplos prácticos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Respect/Validation para PHP: guía completa con ejemplos prácticos

Respect/Validation es una librería potente y elegante para la validación de datos en PHP. A diferencia de las funciones nativas de PHP (como filter_var o las expresiones regulares), Respect/Validation ofrece una interfaz orientada a objetos y encadenable (fluent) para construir reglas de validación complejas. La librería permite crear verificaciones legibles y autodocumentadas que son fáciles de mantener y ampliar.

¿Por qué necesitas esta librería? En cualquier aplicación web, es obligatorio verificar la entrada del usuario: correos electrónicos, contraseñas, URL, direcciones IP, fechas, rangos numéricos y mucho más. Sin un sistema de validación, el código rápidamente se convierte en un caos de if-else y expresiones regulares. Respect/Validation resuelve este problema proporcionando más de 100 reglas (validadores) predefinidas que puedes combinar para crear cadenas de verificación complejas. La librería también admite mensajes de error personalizados en varios idiomas, lo que la convierte en la opción ideal para proyectos internacionales.

La característica clave son las cadenas de validación. Puedes unir varias reglas en una sola cadena y se aplicarán de forma secuencial. Si al menos una regla falla, la validación se detiene (por defecto) y devuelve un error. Esto permite escribir código compacto pero muy expresivo.

Instalación

La instalación se realiza a través de Composer, el gestor de paquetes estándar para PHP. Ejecuta en la terminal, en la raíz de tu proyecto:

composer require respect/validation

Después de la instalación, incluye el cargador automático de Composer en tu archivo PHP:

require_once 'vendor/autoload.php';

Inicio rápido

Un ejemplo mínimo funcional para validar un correo electrónico y una contraseña:

use Respect\Validation\Validator as v;

$email = 'usuario@ejemplo.com';
$password = 'ClaveFuerte1';

// Creamos una cadena de validación
$validator = v::email()->length(6, 100)->notEmpty();

if ($validator->validate($email)) {
    echo "¡El correo es válido!";
} else {
    // Obtenemos el array de errores
    $errors = $validator->getMessages();
    print_r($errors);
}

// Validación de contraseña
$passwordValidator = v::alnum()->noWhitespace()->length(8, 32);
if ($passwordValidator->validate($password)) {
    echo "¡La contraseña es válida!";
}

En este ejemplo, v::email() verifica el formato del correo, length(6, 100) la longitud de la cadena, y notEmpty() que el valor no esté vacío. Todas las reglas están unidas en una cadena.

Métodos y clases principales

Veamos 8 métodos (reglas) clave de la librería. Cada regla es un método estático de la clase Respect\Validation\Validator (generalmente importada como v).

1. v::email()

Firma: public static function email(): Validator

Qué hace: Verifica si el valor es una dirección de correo electrónico válida según RFC 5321/5322.

Ejemplo:

$validator = v::email();
var_dump($validator->validate('test@test.com')); // true
var_dump($validator->validate('no-es-un-email')); // false

2. v::alnum()

Firma: public static function alnum(string $additionalChars = ''): Validator

Qué hace: Verifica si la cadena contiene solo letras (a-z, A-Z) y números (0-9). Puedes pasar caracteres adicionales permitidos.

Ejemplo:

$validator = v::alnum();
var_dump($validator->validate('abc123')); // true
var_dump($validator->validate('hola mundo')); // false (el espacio no está permitido)

// Con caracteres adicionales
$validatorConGuion = v::alnum('-');
var_dump($validatorConGuion->validate('mi-nombre')); // true

Recommendations