סיכום — מעבד תשלומים
חלק מהיחידה תכנות מונחה עצמים במסלול ה-PHP של Coddy. שיעור 37 מתוך 91.
אתגר
קלבואו נבנה מערכת מלאה לעיבוד תשלומים, שמשלבת את כל מה שלמדת על פולימורפיזם. תיצור ארכיטקטורה המבוססת על ממשק, שבה ניתן לעבד אמצעי תשלום שונים באמצעות מעבד אחיד אחד: כך נדגים כיצד פולימורפיזם הופך את הקוד לגמיש וניתן להרחבה.
תארגן את הקוד בחמישה קבצים:
PaymentMethod.php: הגדר ממשקPaymentMethodעם חתימות של שתי מתודות:process(float $amount): stringלטיפול בתשלום, ומתודה סטטיתgetMethodName(): stringשמחזירה את שם סוג התשלום. חוזה זה מבטיח שניתן יהיה לעבד כל אמצעי תשלום באופן אחיד.CreditCard.php: צור מחלקהCreditCardשמממשת אתPaymentMethod. כלול את קובץ הממשק. למחלקה צריכה להיות תכונה פרטית$lastFourDigits, שמוגדרת באמצעות הבנאי. ממש אתprocess()כך שתחזיר"Processing $[amount] via Credit Card ending in [lastFourDigits]"(עצב את הסכום עם 2 ספרות אחרי הנקודה העשרונית). ממש אתgetMethodName()הסטטית באמצעות קישור סטטי מאוחר, כך שתחזיר"Credit Card".PayPal.php: צור מחלקהPayPalשמממשת אתPaymentMethod. כלול את קובץ הממשק. למחלקה צריכה להיות תכונה פרטית$email, שמוגדרת באמצעות הבנאי. ממש אתprocess()כך שתחזיר"Processing $[amount] via PayPal account [email]"(עצב את הסכום עם 2 ספרות אחרי הנקודה העשרונית). ממש אתgetMethodName()הסטטית כך שתחזיר"PayPal".PaymentProcessor.php: צור מחלקהPaymentProcessorשמתזמרת את התשלומים. כלול את קובץ הממשק. הוסף מתודהexecutePayment(PaymentMethod $method, float $amount): stringשמשתמשת ברמזי טיפוס של ממשק כדי לקבל כל אמצעי תשלום. המתודה הזאת צריכה להחזיר את התוצאה של קריאה ל-process()באמצעי התשלום. הוסף מתודה נוספתdescribeMethod(PaymentMethod $method): stringשמחזירה"Payment via: [methodName]"באמצעותgetMethodName()הסטטית מהמחלקה של אמצעי התשלום שהועבר.main.php: כלול את כל קובצי מחלקות התשלום ואת המעבד. צור מופע שלPaymentProcessor. תקבל שלוש קלטים: ארבע הספרות האחרונות של כרטיס אשראי, כתובת דוא"ל של PayPal וסכום לתשלום. צור מופע שלCreditCardומופע שלPayPalעם המזהים המתאימים. המר את הסכום למספר עשרוני. השתמש במעבד כדי לבצע תחילה תשלום באמצעות כרטיס האשראי, ולאחר מכן באמצעות PayPal. הדפס כל תוצאה בשורה נפרדת. לבסוף, הדפס את תיאור אמצעי התשלום של PayPal.
היופי בתכנון הזה הוא של-PaymentProcessor שלך אין ידע ספציפי על כרטיסי אשראי או PayPal. הוא מכיר רק את הממשק PaymentMethod. אפשר להוסיף מחר מחלקה BankTransfer או Cryptocurrency, והמעבד יטפל בהן בלי צורך בשינויים כלשהם. זה הכוח של פולימורפיזם המבוסס על ממשקים בשילוב עם קישור סטטי מאוחר!
נסו בעצמכם
<?php
// כלול את כל הקבצים הנדרשים
require_once 'CreditCard.php';
require_once 'PayPal.php';
require_once 'PaymentProcessor.php';
// קרא את הקלטים
$lastFourDigits = trim(fgets(STDIN));
$paypalEmail = trim(fgets(STDIN));
$amount = floatval(trim(fgets(STDIN)));
// TODO: צור מופע של PaymentProcessor
// TODO: צור מופע של CreditCard עם ארבע הספרות האחרונות
// TODO: צור מופע של PayPal עם כתובת האימייל
// TODO: בצע תשלום בכרטיס אשראי והדפס את התוצאה
// TODO: בצע תשלום באמצעות PayPal והדפס את התוצאה
// TODO: הדפס את תיאור שיטת התשלום עבור PayPal
?>כל השיעורים ביחידה תכנות מונחה עצמים
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סיכום – אוסף מותאם אישית3מאפייני מחלקה
מאפייני מופע לעומת מאפיינים סטטייםקבועים במחלקותמתודות ומאפיינים סטטייםמאפיינים פרטיים ומוגניםמאפיינים לקריאה בלבד (PHP 8.1)סיכום – מנהל חשבון בנק6פולימורפיזם
בחינה מחדש של דריסת מתודותפולימורפיזם באמצעות ממשקיםרמזי טיפוסים וטיפוסי איחודקישור סטטי מאוחרסיכום — מעבד תשלומיםתרגלו בעצמכם: קומפיילר PHP אונליין