בדיקות ואינטגרציה
חלק מהיחידה תכנות מונחה עצמים במסלול ה-PHP של Coddy. שיעור 87 מתוך 91.
אתגר
קלברכות על בניית מערכת מלאה לניהול ספרייה! עכשיו הגיע הזמן לחבר את כל הרכיבים שלך ולוודא שהכול עובד בצורה חלקה. תיצור בדיקת אינטגרציה מקיפה שמפעילה את כל תהליך העבודה של הספרייה שלך.
תארגן את הקוד שלך בחמישה קבצים:
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ושם המשתמש שסופק - מסת"ב:
"978-0", כותרת:"PHP Fundamentals", מחבר:"Sarah Johnson" - מסת"ב:
"978-1", כותרת:"OOP Patterns", מחבר:"Mike Chen" - מסת"ב:
"978-2", כותרת:"Web Security", מחבר:"Sarah Johnson" - בקש מהמשתמש לשאול את
"978-0" - בקש מהמשתמש לשאול את
"978-1" - חפש לפי המחבר באמצעות הקלט השני והדפס את מספר התוצאות:
"Books by author: [count]" - קבל את הספרים הזמינים והדפס:
"Available: [count]" - בקש מהמשתמש להחזיר את
"978-0" - קבל שוב את הספרים הזמינים והדפס:
"Available after return: [count]" - בקש מהמנהל להסיר את
"978-0" - בקש מהמנהל לנסות להסיר שוב את
"978-0"
הגדר את מערכת הספרייה שלך:
בקש מהמנהל להוסיף את שלושת הספרים האלה:
לאחר מכן, הרץ את רצף בדיקת האינטגרציה הזה והדפס כל תוצאה בשורה חדשה:
האתגר האחרון הזה מאמת שהמערכת כולה פועלת יחד: מנהלים שמנהלים את המלאי, משתמשים ששואלים ספרים במסגרת המגבלות, חיפושים שמחזירים תוצאות מדויקות וזמינות שמתעדכנת כראוי לאורך כל תהליך העבודה.
נסו בעצמכם
<?php
require_once 'Admin.php';
// קראו את הקלט
$userName = trim(fgets(STDIN));
$searchAuthor = trim(fgets(STDIN));
// TODO: צרו Library
// TODO: צרו Admin עם ID 1 והשם "LibraryAdmin"
// TODO: צרו User עם ID 2 ושם המשתמש שסופק
// TODO: בקשו מהאדמין להוסיף שלושה ספרים:
// - ISBN: "978-0", כותרת: "PHP Fundamentals", מחבר: "Sarah Johnson"
// - ISBN: "978-1", כותרת: "OOP Patterns", מחבר: "Mike Chen"
// - ISBN: "978-2", כותרת: "Web Security", מחבר: "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"
?>כל השיעורים ביחידה תכנות מונחה עצמים
1יסודות התכנות מונחה העצמים (OOP)
קבצים חיצונייםמבוא ל-OOPמחלקות לעומת אובייקטיםמילת המפתח $thisמתודותמאפייניםבנאי (__construct)הורס (__destruct)חזרה: מחשבון פשוט4ירושה
ירושה בסיסיתמילת המפתח parent::דריסת מתודותמילת המפתח finalמחלקות מופשטותסיכום – היררכיית עובדים7כימוס
ציבורי, מוגן, פרטימפרטי גישה לעומקמתודות גישה ועדכוןהסתרת מידעקידום פרמטרים בבנאי (8.0)סיכום – מערכת רישומי תלמידים2מרחבי שמות וטעינה אוטומטית
מבוא למרחבי שמותמילת המפתח useתקן הטעינה האוטומטית PSR-4הטוען האוטומטי של Composerסיכום – פרויקט מאורגן5ממשקים וחוזים
מבוא לממשקיםמימוש ממשקיםמימוש של כמה ממשקיםממשק לעומת מחלקה מופשטתרמזי טיפוסים עם ממשקיםסיכום - מחשבון צורות8מתודות קסם
מבוא למתודות קסם__toString ו־__debugInfo__get, __set, __isset, __unset__call ו־__callStatic__clone ושיבוט אובייקטים__serialize ו־__unserializeסיכום – אוסף מותאם אישית11מערכת טיפוסים וטיפול בשגיאות
הצהרות טיפוסיםטיפוסים שניתנים להכלה של nullטיפוסי איחוד וחיתוךמחלקות חריגההיררכיית חריגות מותאמת אישיתTry, Catch, Finallyסיכום – מאמת טפסים14פרויקט: ניהול ספרייה
סקירת הפרויקטמחלקות ספר ומשתמש3מאפייני מחלקה
מאפייני מופע לעומת מאפיינים סטטייםקבועים במחלקותמתודות ומאפיינים סטטייםמאפיינים פרטיים ומוגניםמאפיינים לקריאה בלבד (PHP 8.1)סיכום – מנהל חשבון בנק6פולימורפיזם
בחינה מחדש של דריסת מתודותפולימורפיזם באמצעות ממשקיםרמזי טיפוסים וטיפוסי איחודקישור סטטי מאוחרסיכום — מעבד תשלומיםתרגלו בעצמכם: קומפיילר PHP אונליין