Respect/Validation für PHP: Komplettes Tutorial mit Beispielen
Respect/Validation ist eine leistungsstarke und elegante Bibliothek zur Datenvalidierung in PHP. Im Gegensatz zu den eingebauten PHP-Funktionen (wie filter_var oder regulären Ausdrücken) bietet Respect/Validation eine objektorientierte, verkettbare (fluent) Schnittstelle zum Erstellen komplexer Validierungsregeln. Die Bibliothek ermöglicht lesbare, selbstdokumentierende Prüfungen, die leicht zu warten und zu erweitern sind.
Warum wird diese Bibliothek benötigt? In jeder Webanwendung müssen Benutzereingaben überprüft werden: E-Mails, Passwörter, URLs, IP-Adressen, Daten, Zahlenbereiche und vieles mehr. Ohne ein Validierungssystem wird der Code schnell zu einem Durcheinander aus if-else-Anweisungen und regulären Ausdrücken. Respect/Validation löst dieses Problem, indem es über 100 vorgefertigte Regeln (Validatoren) bereitstellt, die kombiniert werden können, um komplexe Prüfketten zu erstellen. Die Bibliothek unterstützt auch benutzerdefinierte Fehlermeldungen in verschiedenen Sprachen, was sie zur idealen Wahl für internationale Projekte macht.
Die wichtigste Funktion sind die Validierungsketten. Sie können mehrere Regeln zu einer Kette verknüpfen, die nacheinander angewendet werden. Wenn eine Regel nicht bestanden wird, stoppt die Validierung (standardmäßig) und gibt einen Fehler zurück. So lässt sich kompakter, aber dennoch sehr ausdrucksstarker Code schreiben.
Installation
Die Installation erfolgt über Composer, den Standard-Paketmanager für PHP. Führen Sie im Terminal im Stammverzeichnis Ihres Projekts aus:
composer require respect/validation
Nach der Installation binden Sie den Composer-Autoloader in Ihrer PHP-Datei ein:
require_once 'vendor/autoload.php';
Schnellstart
Ein minimales Arbeitsbeispiel zur Überprüfung von E-Mail und Passwort:
use Respect\Validation\Validator as v;
$email = 'user@example.com';
$password = 'StrongP@ss1';
// Erstellen einer Validierungskette
$validator = v::email()->length(6, 100)->notEmpty();
if ($validator->validate($email)) {
echo "E-Mail ist gültig!";
} else {
// Fehlerarray abrufen
$errors = $validator->getMessages();
print_r($errors);
}
// Passwortprüfung
$passwordValidator = v::alnum()->noWhitespace()->length(8, 32);
if ($passwordValidator->validate($password)) {
echo "Passwort ist gültig!";
}
In diesem Beispiel prüft v::email() das E-Mail-Format, length(6, 100) die Zeichenfolgenlänge und notEmpty(), dass der Wert nicht leer ist. Alle Regeln sind zu einer Kette verbunden.
Wichtige Methoden und Klassen
Betrachten wir 8 wichtige Methoden (Regeln) der Bibliothek. Jede Regel ist eine statische Methode der Klasse Respect\Validation\Validator (normalerweise als v importiert).
1. v::email()
Signatur: public static function email(): Validator
Funktion: Prüft, ob der Wert eine gültige E-Mail-Adresse gemäß RFC 5321/5322 ist.
Beispiel:
$validator = v::email();
var_dump($validator->validate('test@test.com')); // true
var_dump($validator->validate('keine-email')); // false
2. v::alnum()
Signatur: public static function alnum(string $additionalChars = ''): Validator
Funktion: Prüft, ob die Zeichenfolge nur Buchstaben (a-z, A-Z) und Ziffern (0-9) enthält. Zusätzlich erlaubte Zeichen können übergeben werden.
Beispiel:
$validator = v::alnum();
var_dump($validator->validate('abc123')); // true
var_dump($validator->validate('hallo welt')); // false (Leerzeichen nicht erlaubt)
// Mit zusätzlichen Zeichen
$validatorWithDash = v::alnum('-');
var_dump($validatorWithDash->validate('mein-name')); // true