Итоги: Валидация входных данных
Часть раздела Логика и управление потоком путешествия по PHP на Coddy — урок 58 из 68.
Задание
ЛегкоВы получите четыре входных значения: строку с адресом электронной почты, строку с номером телефона, число минимального возраста и число фактического возраста.
Создайте два пользовательских класса исключений:
InvalidEmailException, который расширяет базовый классExceptionInvalidAgeException, который расширяет базовый класс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
?>Все уроки раздела Логика и управление потоком
1Продвинутые функции
Анонимные функцииЗамыкания и 'use'Стрелочные функцииCallback-функцииИспользование 'call_user_func'Функции переменныхПередача по ссылкеРекурсивные функцииИтоги: ассорти из функций4Многомерные массивы
Создание 2D-массиваДоступ к элементам 2D-массиваИзменение элементов 2D-массиваИтерация с вложенными цикламиДвумерные ассоциативные массивыИтоги: Упражнение «Простая сетка»2Продвинутая работа с массивами
Добавление с помощью 'array_push'Удаление с помощью 'array_pop'Добавление с помощью 'array_unshift'Удаление с помощью 'array_shift'Слияние индексных массивовСлияние ассоциативных массивовИзвлечение с помощью 'array_slice'Поиск значений с 'in_array'Поиск ключей с 'array_search'Итоги: Упражнение «Плейлист»5Журнал успеваемости студентов
Настройка проекта: структура данныхДобавление нового студентаДобавление оценки студентуРасчет среднего балла студентаПоиск лучшего студентаСоздание табеля успеваемости8Обработка ошибок и исключений
Понимание ошибок PHPБлок 'try...catch'Блок 'finally'Генерация исключенияСоздание пользовательского исключенияИспользование пользовательского исключенияИтоги: Валидация входных данных3Сортировка массивов
Сортировка индексных массивов по возрастаниюСортировка индексных массивов по убываниюСортировка ассоциативных массивов по значениюСортировка ассоциативных массивов по ключуСортировка в естественном порядкеПользовательская сортировка с помощью 'usort'Итоги: Сортировка таблицы лидеров