Zusammenfassung: Eingabevalidierung
Teil des Abschnitts Logik & Ablauf der PHP-Journey von Coddy — Lektion 58 von 68.
Aufgabe
EinfachSie 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 BasisklasseExceptionerweitertInvalidAgeException, die die BasisklasseExceptionerweitert
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 eineInvalidEmailExceptionmit 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
Exceptionmit 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
InvalidAgeExceptionmit 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 sollteInvalidEmailExceptionabfangen und"Email error: "gefolgt von der Exception-Nachricht ausgeben - Der zweite
catch-Block sollteInvalidAgeExceptionabfangen und"Age error: "gefolgt von der Exception-Nachricht ausgeben - Fügen Sie einen dritten
catch-Block hinzu, der jede andereExceptionabfä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.comoderinvalidemail.com) - Zweite Zeile: Eine Zeichenfolge, die die Telefonnummer darstellt (Beispiel:
1234567890oder12345) - Dritte Zeile: Eine Ganzzahl, die die Mindestalter-Anforderung darstellt (Beispiel:
18) - Vierte Zeile: Eine Ganzzahl, die das tatsächliche Alter darstellt (Beispiel:
25oder16)
Erwartete Ausgabe:
- Wenn alle Daten gültig sind:
User data is validgefolgt vonValidation process completedin einer neuen Zeile - Wenn die E-Mail ungültig ist:
Email error: Email must contain @ symbolgefolgt vonValidation process completedin einer neuen Zeile - Wenn die Telefonnummer ungültig ist:
Validation error: Phone number must be 10 digitsgefolgt vonValidation process completedin 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 vonValidation process completedin 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
1Fortgeschrittene Funktionen
Anonyme FunktionenClosures und 'use'Arrow FunctionsCallback-FunktionenVerwendung von 'call_user_func'VariablenfunktionenReferenzübergabeRekursive FunktionenRückblick: Funktions-Medley4Mehrdimensionale Arrays
Ein 2D-Array erstellenZugriff auf 2D-Array-ElementeÄndern von 2D-Array-ElementenIterieren mit verschachtelten Schleifen2D assoziative ArraysZusammenfassung: Einfache Gitter-Übung2Fortgeschrittene Array-Manipulationen
Hinzufügen mit 'array_push'Entfernen mit 'array_pop'Hinzufügen mit 'array_unshift'Entfernen mit 'array_shift'Indizierte Arrays zusammenführenAssoziative Arrays zusammenführenExtrahieren mit 'array_slice'Werte mit 'in_array'Schlüssel mit 'array_search'Rückblick: Playlist-Übung5Schüler-Notenbuch
Projekt-Setup: DatenstrukturEinen neuen Schüler hinzufügenEinem Schüler eine Note hinzufügenDurchschnittsnote eines Schülers berechnenDen besten Schüler findenEin Zeugnis erstellen8Fehler- und Ausnahmebehandlung
PHP-Fehler verstehenDer 'try...catch'-BlockDer 'finally'-BlockEine Exception auslösenEine benutzerdefinierte Exception erstellenEine benutzerdefinierte Exception verwendenZusammenfassung: Eingabevalidierung3Arrays sortieren
Indizierte Arrays aufsteigend sortierenIndizierte Arrays absteigend sortierenAssoziative Arrays nach Wert sortierenAssoziative Arrays nach Schlüssel sortierenNatürliche SortierungBenutzerdefiniertes Sortieren mit 'usort'Recap: Leaderboard-Sortierung