Menu
Coddy logo textTech

סיכום — מעבד תשלומים

חלק מהיחידה תכנות מונחה עצמים במסלול ה-PHP של Coddy. שיעור 37 מתוך 91.

challenge icon

אתגר

קל

בואו נבנה מערכת מלאה לעיבוד תשלומים, שמשלבת את כל מה שלמדת על פולימורפיזם. תיצור ארכיטקטורה המבוססת על ממשק, שבה ניתן לעבד אמצעי תשלום שונים באמצעות מעבד אחיד אחד: כך נדגים כיצד פולימורפיזם הופך את הקוד לגמיש וניתן להרחבה.

תארגן את הקוד בחמישה קבצים:

  • 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
?>

כל השיעורים ביחידה תכנות מונחה עצמים

תרגלו בעצמכם: קומפיילר PHP אונליין