סיכום: אימות קלט
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-PHP של Coddy. שיעור 58 מתוך 68.
אתגר
קלתקבלו ארבעה קלטים: מחרוזת של כתובת דוא"ל, מחרוזת של מספר טלפון, מספר המייצג את הגיל המינימלי ומספר המייצג את הגיל בפועל.
צרו שתי מחלקות חריגה מותאמות אישית:
InvalidEmailExceptionשמרחיבה את מחלקת הבסיסExceptionInvalidAgeExceptionשמרחיבה את מחלקת הבסיס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
?>כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1פונקציות מתקדמות
פונקציות אנונימיותסגירות ו-'use'פונקציות חץפונקציות callbackשימוש ב-'call_user_func'פונקציות משתנותהעברה באמצעות הפניהפונקציות רקורסיביותסיכום: מגוון פונקציות4מערכים רב־ממדיים
יצירת מערך דו־ממדיגישה לאיברי מערך דו־ממדישינוי איברי מערך דו־ממדימעבר באמצעות לולאות מקוננותמערכים אסוציאטיביים דו־ממדייםסיכום: תרגיל רשת פשוטה2מניפולציות מתקדמות במערכים
הוספה באמצעות 'array_push'הסרה באמצעות 'array_pop'הוספה לתחילת המערך באמצעות 'array_unshift'הסרה מתחילת המערך באמצעות 'array_shift'מיזוג מערכים ממוספריםמיזוג מערכים אסוציאטיבייםחילוץ באמצעות 'array_slice'בדיקת ערכים באמצעות 'in_array'חיפוש מפתחות באמצעות 'array_search'סיכום: תרגיל רשימת השמעה5פנקס ציונים לתלמידים
הגדרת הפרויקט: מבנה הנתוניםהוספת תלמיד חדשהוספת ציון לתלמידחישוב הממוצע של התלמידמציאת התלמיד המצטייןהפקת תעודת ציונים8טיפול בשגיאות ובחריגות
הבנת שגיאות PHPבלוק try...catchבלוק finallyזריקת חריגהיצירת חריגה מותאמת אישיתשימוש בחריגה מותאמת אישיתסיכום: אימות קלט3מיון מערכים
מיון מערכים עם אינדקסים בסדר עולהמיון מערכים עם אינדקסים בסדר יורדמיון מערכים אסוציאטיביים לפי ערךמיון מערכים אסוציאטיביים לפי מפתחמיון בסדר טבעימיון מותאם אישית באמצעות 'usort'סיכום: מיון טבלת מוביליםתרגלו בעצמכם: קומפיילר PHP אונליין