Menu
Coddy logo textTech

Zusammenfassung: Eingabevalidierung

Teil des Abschnitts Logik & Ablauf der PHP-Journey von Coddy — Lektion 58 von 68.

challenge icon

Aufgabe

Einfach

Sie erhalten vier Eingaben: eine E-Mail-Adress-Zeichenfolge, eine Telefonnummer-Zeichenfolge, eine Zahl für das Mindestalter und eine Zahl für das tatsächliche Alter.

Erstellen Sie zwei benutzerdefinierte Exception-Klassen:

  • InvalidEmailException, die die Basisklasse Exception erweitert
  • InvalidAgeException, die die Basisklasse Exception erweitert

Erstellen Sie eine Funktion namens validateUserData, die vier Parameter akzeptiert: E-Mail, Telefon, Mindestalter und tatsächliches Alter. Innerhalb dieser Funktion:

  • Prüfen Sie, ob die E-Mail das @-Symbol enthält. Wenn nicht, werfen Sie eine InvalidEmailException mit der Nachricht "Email must contain @ symbol"
  • Prüfen Sie, ob die Länge der Telefonnummer genau 10 Zeichen beträgt. Wenn nicht, werfen Sie eine generische Exception mit der Nachricht "Phone number must be 10 digits"
  • Prüfen Sie, ob das tatsächliche Alter geringer als das Mindestalter ist. Wenn ja, werfen Sie eine InvalidAgeException mit der Nachricht "User must be at least X years old" (wobei X der Wert des Mindestalters ist)
  • Wenn alle Validierungen erfolgreich sind, geben Sie "User data is valid" aus

Verwenden Sie einen try...catch...finally-Block, um die Funktion mit den bereitgestellten Eingaben aufzurufen. Erstellen Sie zwei separate catch-Blöcke:

  • Der erste catch-Block sollte InvalidEmailException abfangen und "Email error: " gefolgt von der Exception-Nachricht ausgeben
  • Der zweite catch-Block sollte InvalidAgeException abfangen und "Age error: " gefolgt von der Exception-Nachricht ausgeben
  • Fügen Sie einen dritten catch-Block hinzu, der jede andere Exception abfängt und "Validation error: " gefolgt von der Exception-Nachricht ausgeben

Geben Sie im finally-Block "Validation process completed" aus.

Eingabeformat:

  • Erste Zeile: Eine Zeichenfolge, die die E-Mail-Adresse darstellt (Beispiel: user@example.com oder invalidemail.com)
  • Zweite Zeile: Eine Zeichenfolge, die die Telefonnummer darstellt (Beispiel: 1234567890 oder 12345)
  • Dritte Zeile: Eine Ganzzahl, die die Mindestalter-Anforderung darstellt (Beispiel: 18)
  • Vierte Zeile: Eine Ganzzahl, die das tatsächliche Alter darstellt (Beispiel: 25 oder 16)

Erwartete Ausgabe:

  • Wenn alle Daten gültig sind: User data is valid gefolgt von Validation process completed in einer neuen Zeile
  • Wenn die E-Mail ungültig ist: Email error: Email must contain @ symbol gefolgt von Validation process completed in einer neuen Zeile
  • Wenn die Telefonnummer ungültig ist: Validation error: Phone number must be 10 digits gefolgt von Validation process completed in einer neuen Zeile
  • Wenn das Alter unter dem Minimum liegt: Age error: User must be at least X years old (wobei X das Mindestalter ist) gefolgt von Validation process completed in einer neuen Zeile

Probier es selbst

<?php
// Eingaben lesen
$email = trim(fgets(STDIN));
$phone = trim(fgets(STDIN));
$minAge = intval(fgets(STDIN));
$actualAge = intval(fgets(STDIN));

// TODO: Erstellen Sie hier benutzerdefinierte Exception-Klassen
// Erstellen Sie die Klasse InvalidEmailException
// Erstellen Sie die Klasse InvalidAgeException

// TODO: Erstellen Sie hier die Funktion validateUserData
// Die Funktion sollte vier Parameter akzeptieren: email, phone, minAge, actualAge
// Implementieren Sie die Validierungslogik innerhalb der Funktion

// TODO: Verwenden Sie einen try...catch...finally-Block, um die Funktion aufzurufen
// Rufen Sie validateUserData mit den Eingabewerten auf
// Fügen Sie catch-Blöcke für InvalidEmailException, InvalidAgeException und allgemeine Exception hinzu
// Fügen Sie den finally-Block hinzu

?>

Alle Lektionen in Logik & Ablauf