Menu
Coddy logo textTech

סיכום: אימות קלט

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-PHP של Coddy. שיעור 58 מתוך 68.

challenge icon

אתגר

קל

תקבלו ארבעה קלטים: מחרוזת של כתובת דוא"ל, מחרוזת של מספר טלפון, מספר המייצג את הגיל המינימלי ומספר המייצג את הגיל בפועל.

צרו שתי מחלקות חריגה מותאמות אישית:

  • InvalidEmailException שמרחיבה את מחלקת הבסיס Exception
  • InvalidAgeException שמרחיבה את מחלקת הבסיס Exception

צרו פונקציה בשם validateUserData שמקבלת ארבעה פרמטרים: email, phone, גיל מינימלי וגיל בפועל. בתוך הפונקציה:

  • בדקו אם כתובת הדוא"ל מכילה את הסמל @. אם לא, זרקו 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 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

?>

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר PHP אונליין