Podsumowanie: walidacja danych wejściowych
Część sekcji Logika i przepływ programu ścieżki PHP w Coddy. Lekcja 58 z 68.
Wyzwanie
ŁatwyOtrzymasz 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 klasieExceptionInvalidAgeException, która dziedziczy po bazowej klasieException
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ątekInvalidEmailExceptionz 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
Exceptionz komunikatem"Phone number must be 10 digits" - Sprawdź, czy rzeczywisty wiek jest mniejszy niż minimalny wiek. Jeśli tak, rzuć wyjątek
InvalidAgeExceptionz 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
catchpowinien przechwytywać wyjątekInvalidEmailExceptioni wypisywać"Email error: ", a następnie komunikat wyjątku - Drugi blok
catchpowinien przechwytywać wyjątekInvalidAgeExceptioni wypisywać"Age error: ", a następnie komunikat wyjątku - Dodaj trzeci blok
catch, który przechwytuje każdy inny wyjątekExceptioni 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.comlubinvalidemail.com) - Drugi wiersz: ciąg znaków reprezentujący numer telefonu (przykład:
1234567890lub12345) - 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:
25lub16)
Oczekiwany wynik:
- Jeśli wszystkie dane są poprawne:
User data is valid, a następnieValidation process completedw nowym wierszu - Jeśli adres e-mail jest niepoprawny:
Email error: Email must contain @ symbol, a następnieValidation process completedw nowym wierszu - Jeśli numer telefonu jest niepoprawny:
Validation error: Phone number must be 10 digits, a następnieValidation process completedw 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ępnieValidation process completedw 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
1Zaawansowane funkcje
Funkcje anonimoweDomknięcia i „use”Funkcje strzałkoweFunkcje zwrotneUżywanie „call_user_func”Funkcje zmiennePrzekazywanie przez referencjęFunkcje rekurencyjnePowtórka: przegląd funkcji4Tablice wielowymiarowe
Tworzenie tablicy 2DDostęp do elementów tablicy 2DModyfikowanie elementów tablicy 2DIterowanie z użyciem zagnieżdżonych pętliAsocjacyjne tablice 2DPodsumowanie: ćwiczenie z prostą siatką2Zaawansowane operacje na tablicach
Dodawanie za pomocą 'array_push'Usuwanie za pomocą 'array_pop'Dodawanie za pomocą 'array_unshift'Usuwanie za pomocą 'array_shift'Łączenie tablic indeksowanychŁączenie tablic asocjacyjnychWyodrębnianie za pomocą 'array_slice'Wyszukiwanie wartości za pomocą 'in_array'Wyszukiwanie kluczy za pomocą 'array_search'Podsumowanie: ćwiczenie z playlistą5Dziennik ocen uczniów
Konfiguracja projektu: struktura danychDodawanie nowego uczniaDodawanie oceny uczniowiObliczanie średniej uczniaWyszukiwanie ucznia z najwyższą ocenąGenerowanie świadectwa8Obsługa błędów i wyjątków
Poznawanie błędów PHPBlok „try...catch”Blok „finally”Zgłaszanie wyjątkuTworzenie własnego wyjątkuKorzystanie z własnego wyjątkuPodsumowanie: walidacja danych wejściowych3Sortowanie tablic
Sortowanie tablic indeksowanych rosnącoSortowanie tablic indeksowanych malejącoSortowanie tablic asocjacyjnych według wartościSortowanie tablic asocjacyjnych według kluczaSortowanie w kolejności naturalnejSortowanie niestandardowe za pomocą 'usort'Podsumowanie: sortowanie tabeli wynikówPoćwicz samodzielnie: Kompilator PHP online