Datenvalidierung in PHP: Von integrierten Funktionen bis zu professionellen Bibliotheken
Datenvalidierung ist einer der Grundpfeiler sicherer und stabiler Webanwendungen. In PHP gibt es viele Ansätze: von einfachen integrierten Funktionen bis hin zu leistungsstarken Bibliotheken, die das Entwurfsmuster „Verantwortungskette“ (Chain of Responsibility) implementieren und komplexe Prüfszenarien unterstützen. In diesem Artikel betrachten wir drei beliebte Werkzeuge zur Validierung in PHP: Respect\\Validation, Symfony Validator und Aura.Filter, und erinnern auch an die integrierten Möglichkeiten der Sprache.
1. Integrierte PHP-Funktionen
Bevor Sie externe Bibliotheken einbinden, sollten Sie bedenken, dass PHP grundlegende Werkzeuge zum Filtern und Prüfen von Daten bereitstellt:
filter_var()— Prüfung und Bereinigung von Daten anhand von Filtern (E-Mail, URL, Integer usw.)preg_match()— Prüfung mit regulären Ausdrückenempty(),is_numeric(),strlen()— einfache Prüfungenctype_alpha(),ctype_digit()— Prüfung von Zeichensätzen
Beispiel für die Verwendung von filter_var:
<?php$email = "user@example.com";if (filter_var($email, FILTER_VALIDATE_EMAIL)) { echo "E-Mail ist korrekt";} else { echo "Ungültige E-Mail";}?>2. Respect\\Validation
Respect\\Validation ist eine der beliebtesten Bibliotheken zur Validierung in PHP. Ihr Hauptvorteil ist die lesbare, verkettbare Syntax (fluent interface) und eine riesige Anzahl vorgefertigter Regeln (über 100).
Installation
composer require respect/validationAnwendungsbeispiel
<?phpuse Respect\\Validation\\Validator as v;
$user = [ 'name' => 'Ivan', 'email' => 'ivan@test.com', 'age' => 25, 'website' => 'https://example.com'];
$validator = v::key('name', v::stringType()->length(2, 50)) ->key('email', v::email()) ->key('age', v::intType()->between(18, 120)) ->key('website', v::optional(v::url()));
try { $validator->assert($user); echo "Daten sind gültig!";} catch (\\Respect\\Validation\\Exceptions\\NestedValidationException $e) { print_r($e->getMessages());}?>Die Bibliothek unterstützt benutzerdefinierte Fehlermeldungen, verschachtelte Array-Validierung und ermöglicht die Kombination von Regeln über allOf(), oneOf() und noneOf().
3. Symfony Validator
Die Komponente Symfony Validator ist Teil des Symfony-Ökosystems, kann aber auch separat verwendet werden. Sie ist ein Industriestandard für die Validierung komplexer Datenstrukturen mit Unterstützung für Annotationen, XML- und YAML-Konfigurationen.
Installation
composer require symfony/validatorBeispiel mit Attributen (PHP 8+)
<?phpuse Symfony\\Component\\Validator\\Validation;use Symfony\\Component\\Validator\\Constraints as Assert;
class User{ #[Assert\\NotBlank] #[Assert\\Length(min: 2, max: 50)] public string $name;
#[Assert\\NotBlank] #[Assert\\Email] public string $email;
#[Assert\\NotBlank] #[Assert\\Positive] #[Assert\\LessThan(150)] public int $age;}
$user = new User();$user->name = 'Ivan';$user->email = 'ivan@test.com';$user->age = 25;
$validator = Validation::createValidatorBuilder() ->enableAttributeMapping() ->getValidator();
$violations = $validator->validate($user);
if (count($violations) === 0) { echo "Validierung bestanden!";} else { foreach ($violations as $violation) { echo $violation->getPropertyPath() . ': ' . $violation->getMessage() . ""; }}?>Symfony Validator unterstützt Validierungsgruppen, kaskadierte Prüfung in
Auch in der Bibliothek
Arbeiten mit Bildern in Rust: resize und crop mit der Bibliothek image
Konfiguration von C++-Anwendungen: Bibliotheken und Ansätze
CLI-Framework für Rust: Vollständiger Leitfaden zur Entwicklung von Dienstprogrammen
Maschinelles Lernen mit Go: Bibliotheken für Golang (ML, neuronale Netze, NLP)