Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

مراجعة: التحقق من صحة المدخلات

جزء من قسم Logic & Flow في رحلة PHP على Coddy — الدرس 58 من 68.

challenge icon

التحدي

سهل

ستتلقى أربعة مدخلات: سلسلة نصية لعنوان البريد الإلكتروني، وسلسلة نصية لرقم الهاتف، ورقم للحد الأدنى للسن، ورقم للسن الفعلي.

قم بإنشاء فئتين مخصصتين للاستثناءات (exception classes):

  • InvalidEmailException التي ترث من فئة Exception الأساسية
  • InvalidAgeException التي ترث من فئة Exception الأساسية

قم بإنشاء دالة تسمى validateUserData تقبل أربعة معاملات: البريد الإلكتروني، والهاتف، والحد الأدنى للسن، والسن الفعلي. داخل هذه الدالة:

  • تحقق مما إذا كان البريد الإلكتروني يحتوي على رمز @. إذا لم يكن كذلك، قم برمي 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

?>

جميع دروس Logic & Flow