Menu
Coddy logo textTech

Podsumowanie: walidacja danych wejściowych

Część sekcji Logika i przepływ programu ścieżki PHP w Coddy. Lekcja 58 z 68.

challenge icon

Wyzwanie

Łatwy

Otrzymasz cztery dane wejściowe: ciąg znaków z adresem e-mail, ciąg znaków z numerem telefonu, liczbę oznaczającą minimalny wiek oraz liczbę oznaczającą rzeczywisty wiek.

Utwórz dwie własne klasy wyjątków:

  • InvalidEmailException, która dziedziczy po bazowej klasie Exception
  • InvalidAgeException, która dziedziczy po bazowej klasie Exception

Utwórz funkcję o nazwie validateUserData, która przyjmuje cztery parametry: email, phone, minimalny wiek i rzeczywisty wiek. Wewnątrz tej funkcji:

  • Sprawdź, czy adres e-mail zawiera symbol @. Jeśli nie, rzuć wyjątek InvalidEmailException z komunikatem "Email must contain @ symbol"
  • Sprawdź, czy długość numeru telefonu wynosi dokładnie 10 znaków. Jeśli nie, rzuć ogólny wyjątek Exception z komunikatem "Phone number must be 10 digits"
  • Sprawdź, czy rzeczywisty wiek jest mniejszy niż minimalny wiek. Jeśli tak, rzuć wyjątek InvalidAgeException z komunikatem "User must be at least X years old" (gdzie X to wartość minimalnego wieku)
  • Jeśli wszystkie kontrole poprawności się powiodą, wypisz "User data is valid"

Użyj bloku try...catch...finally, aby wywołać funkcję z podanymi danymi wejściowymi. Utwórz dwa osobne bloki catch:

  • Pierwszy blok catch powinien przechwytywać wyjątek InvalidEmailException i wypisywać "Email error: ", a następnie komunikat wyjątku
  • Drugi blok catch powinien przechwytywać wyjątek InvalidAgeException i wypisywać "Age error: ", a następnie komunikat wyjątku
  • Dodaj trzeci blok catch, który przechwytuje każdy inny wyjątek Exception i wypisuje "Validation error: ", a następnie komunikat wyjątku

W bloku finally wypisz "Validation process completed".

Format danych wejściowych:

  • Pierwszy wiersz: ciąg znaków reprezentujący adres e-mail (przykład: user@example.com lub invalidemail.com)
  • Drugi wiersz: ciąg znaków reprezentujący numer telefonu (przykład: 1234567890 lub 12345)
  • Trzeci wiersz: liczba całkowita określająca wymagany minimalny wiek (przykład: 18)
  • Czwarty wiersz: liczba całkowita reprezentująca rzeczywisty wiek (przykład: 25 lub 16)

Oczekiwany wynik:

  • Jeśli wszystkie dane są poprawne: User data is valid, a następnie Validation process completed w nowym wierszu
  • Jeśli adres e-mail jest niepoprawny: Email error: Email must contain @ symbol, a następnie Validation process completed w nowym wierszu
  • Jeśli numer telefonu jest niepoprawny: Validation error: Phone number must be 10 digits, a następnie Validation process completed w nowym wierszu
  • Jeśli wiek jest niższy od minimalnego: Age error: User must be at least X years old (gdzie X to minimalny wiek), a następnie Validation process completed w nowym wierszu

Spróbuj swoich sił

<?php
// Wczytaj dane wejściowe
$email = trim(fgets(STDIN));
$phone = trim(fgets(STDIN));
$minAge = intval(fgets(STDIN));
$actualAge = intval(fgets(STDIN));

// TODO: Utwórz tutaj własne klasy wyjątków
// Utwórz klasę InvalidEmailException
// Utwórz klasę InvalidAgeException

// TODO: Utwórz tutaj funkcję validateUserData
// Funkcja powinna przyjmować cztery parametry: email, phone, minAge, actualAge
// Zaimplementuj logikę walidacji wewnątrz funkcji

// TODO: Użyj bloku try...catch...finally, aby wywołać funkcję
// Wywołaj validateUserData z wartościami wejściowymi
// Dodaj bloki catch dla InvalidEmailException, InvalidAgeException oraz ogólnego wyjątku Exception
// Dodaj blok finally

?>

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator PHP online