Menu
Coddy logo textTech

요약: 입력 유효성 검사

Coddy PHP 여정의 논리 & 흐름 섹션에 포함된 레슨 — 68개 중 58번째.

challenge icon

챌린지

쉬움

이메일 주소 문자열, 전화번호 문자열, 최소 연령 숫자, 실제 연령 숫자의 네 가지 입력을 받게 됩니다.

두 개의 사용자 정의 예외 클래스를 생성하세요:

  • 기본 Exception 클래스를 상속받는 InvalidEmailException
  • 기본 Exception 클래스를 상속받는 InvalidAgeException

이메일, 전화번호, 최소 연령, 실제 연령의 네 가지 매개변수를 받는 validateUserData라는 함수를 생성하세요. 이 함수 내부에서 다음을 수행합니다:

  • 이메일에 @ 기호가 포함되어 있는지 확인합니다. 포함되어 있지 않으면 "Email must contain @ symbol"이라는 메시지와 함께 InvalidEmailException을 발생시킵니다.
  • 전화번호의 길이가 정확히 10자인지 확인합니다. 그렇지 않으면 "Phone number must be 10 digits"라는 메시지와 함께 일반 Exception을 발생시킵니다.
  • 실제 연령이 최소 연령보다 적은지 확인합니다. 적다면 "User must be at least X years old" (여기서 X는 최소 연령 값)라는 메시지와 함께 InvalidAgeException을 발생시킵니다.
  • 모든 유효성 검사를 통과하면 "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 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 호출
// InvalidEmailException, InvalidAgeException 및 일반 Exception에 대한 catch 블록 추가
// finally 블록 추가

?>

논리 & 흐름의 모든 레슨