Menu
Coddy logo textTech

Итоги: Валидация входных данных

Часть раздела Логика и управление потоком путешествия по PHP на Coddy — урок 58 из 68.

challenge icon

Задание

Легко

Вы получите четыре входных значения: строку с адресом электронной почты, строку с номером телефона, число минимального возраста и число фактического возраста.

Создайте два пользовательских класса исключений:

  • InvalidEmailException, который расширяет базовый класс Exception
  • InvalidAgeException, который расширяет базовый класс Exception

Создайте функцию с именем validateUserData, которая принимает четыре параметра: email, phone, minimum age и actual age. Внутри этой функции:

  • Проверьте, содержит ли email символ @. Если нет, выбросьте исключение InvalidEmailException с сообщением "Email must contain @ symbol"
  • Проверьте, составляет ли длина номера телефона ровно 10 символов. Если нет, выбросьте общее исключение Exception с сообщением "Phone number must be 10 digits"
  • Проверьте, меньше ли фактический возраст, чем минимальный. Если да, выбросьте исключение InvalidAgeException с сообщением "User must be at least X years old" (где X — значение минимального возраста)
  • Если все проверки пройдены, выведите "User data is valid"

Используйте блок try...catch...finally для вызова функции с предоставленными входными данными. Создайте два отдельных блока catch:

  • Первый блок catch должен перехватывать InvalidEmailException и выводить "Email error: ", за которым следует сообщение исключения
  • Второй блок catch должен перехватывать InvalidAgeException и выводить "Age error: ", за которым следует сообщение исключения
  • Добавьте третий блок catch, который перехватывает любое другое исключение Exception и выводит "Validation error: ", за которым следует сообщение исключения

В блоке finally выведите "Validation process completed".

Формат входных данных:

  • Первая строка: Строка, представляющая адрес электронной почты (пример: user@example.com или invalidemail.com)
  • Вторая строка: Строка, представляющая номер телефона (пример: 1234567890 или 12345)
  • Третья строка: Целое число, представляющее требование к минимальному возрасту (пример: 18)
  • Четвертая строка: Целое число, представляющее фактический возраст (пример: 25 или 16)

Ожидаемый вывод:

  • Если все данные верны: User data is valid, а затем Validation process completed на новой строке
  • Если email невалиден: Email error: Email must contain @ symbol, а затем Validation process completed на новой строке
  • Если номер телефона невалиден: Validation error: Phone number must be 10 digits, а затем Validation process completed на новой строке
  • Если возраст ниже минимального: Age error: User must be at least X years old (где X — минимальный возраст), а затем Validation process completed на новой строке

Попробуйте сами

<?php
// Чтение входных данных
$email = trim(fgets(STDIN));
$phone = trim(fgets(STDIN));
$minAge = intval(fgets(STDIN));
$actualAge = intval(fgets(STDIN));

// TODO: Создайте здесь пользовательские классы исключений
// Создайте класс InvalidEmailException
// Создайте класс InvalidAgeException

// TODO: Создайте здесь функцию validateUserData
// Функция должна принимать четыре параметра: email, phone, minAge, actualAge
// Реализуйте логику валидации внутри функции

// TODO: Используйте блок try...catch...finally для вызова функции
// Вызовите validateUserData с входными значениями
// Добавьте блоки catch для InvalidEmailException, InvalidAgeException и общего Exception
// Добавьте блок finally

?>

Все уроки раздела Логика и управление потоком