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

الاختبار والتكامل

جزء من قسم Object Oriented Programming في رحلة PHP على Coddy — الدرس 87 من 91.

challenge icon

التحدي

سهل

تهانينا على بناء نظام كامل لإدارة المكتبة! حان الوقت الآن لجمع كل مكوناتك معاً والتحقق من أن كل شيء يعمل بسلاسة. ستقوم بإنشاء اختبار تكامل شامل يطبق سير العمل الكامل لمكتبتك.

ستقوم بتنظيم الكود الخاص بك عبر خمسة ملفات:

  • Book.php — فئة Book الخاصة بك مع خصائص للقراءة فقط (isbn، title، author)، وخاصية خاصة $isAvailable، والأساليب: isAvailable()، و markAsBorrowed()، و markAsReturned().
  • User.php — قم بتضمين ملف Book. فئة User الخاصة بك مع خصائص للقراءة فقط (id، name)، ومصفوفة خاصة $borrowedBooks، وثابت MAX_BOOKS بقيمة 3، وجميع أساليب المستخدم.
  • Library.php — قم بتضمين ملف User. فئة Library الخاصة بك مع إدارة الكتب، ووظائف الاستعارة/الإرجاع، وأساليب البحث، وأسلوب removeBook().
  • Admin.php — قم بتضمين ملف Library. فئة Admin الخاصة بك التي ترث من User مع أساليب addBookToLibrary() و removeBookFromLibrary().
  • main.php — قم بتضمين ملف Admin. هذا هو المكان الذي ستجري فيه اختبار التكامل الخاص بك. ستتلقى مدخلين: اسم مستخدم وكلمة مفتاحية للبحث عن مؤلف.

    قم بإعداد نظام المكتبة الخاص بك:

    • أنشئ Library
    • أنشئ Admin بمعرف 1 واسم "LibraryAdmin"
    • أنشئ User بمعرف 2 واسم المستخدم المقدم

    اجعل المسؤول (admin) يضيف هذه الكتب الثلاثة:

    • ISBN: "978-0"، العنوان: "PHP Fundamentals"، المؤلف: "Sarah Johnson"
    • ISBN: "978-1"، العنوان: "OOP Patterns"، المؤلف: "Mike Chen"
    • ISBN: "978-2"، العنوان: "Web Security"، المؤلف: "Sarah Johnson"

    ثم قم بتشغيل تسلسل اختبار التكامل هذا، مع طباعة كل نتيجة في سطر جديد:

    1. اجعل المستخدم يستعير "978-0"
    2. اجعل المستخدم يستعير "978-1"
    3. ابحث عن طريق المؤلف باستخدام المدخل الثاني واطبع العدد: "Books by author: [count]"
    4. احصل على الكتب المتاحة واطبع: "Available: [count]"
    5. اجعل المستخدم يعيد "978-0"
    6. احصل على الكتب المتاحة مرة أخرى واطبع: "Available after return: [count]"
    7. اجعل المسؤول يزيل "978-0"
    8. اجعل المسؤول يحاول إزالة "978-0" مرة أخرى

يتحقق هذا التحدي النهائي من أن نظامك بالكامل يعمل معاً — المسؤولون يديرون المخزون، والمستخدمون يستعيرون ضمن الحدود، وعمليات البحث تعيد نتائج دقيقة، وتحديث التوفر بشكل صحيح طوال سير العمل.

جرّب بنفسك

<?php

require_once 'Admin.php';

// قراءة المدخلات
$userName = trim(fgets(STDIN));
$searchAuthor = trim(fgets(STDIN));

// TODO: إنشاء مكتبة (Library)

// TODO: إنشاء مسؤول (Admin) بمعرف 1 واسم "LibraryAdmin"

// TODO: إنشاء مستخدم (User) بمعرف 2 واسم المستخدم المقدم

// TODO: اجعل المسؤول يضيف ثلاثة كتب:
// - ISBN: "978-0", Title: "PHP Fundamentals", Author: "Sarah Johnson"
// - ISBN: "978-1", Title: "OOP Patterns", Author: "Mike Chen"
// - ISBN: "978-2", Title: "Web Security", Author: "Sarah Johnson"

// TODO: تسلسل اختبار التكامل:
// 1. اجعل المستخدم يستعير "978-0"
// 2. اجعل المستخدم يستعير "978-1"
// 3. ابحث بواسطة المؤلف باستخدام $searchAuthor واطبع: "Books by author: [count]"
// 4. احصل على الكتب المتاحة واطبع: "Available: [count]"
// 5. اجعل المستخدم يعيد "978-0"
// 6. احصل على الكتب المتاحة مرة أخرى واطبع: "Available after return: [count]"
// 7. اجعل المسؤول يحذف "978-0"
// 8. اجعل المسؤول يحاول حذف "978-0" مرة أخرى

?>

جميع دروس Object Oriented Programming