The Value Object Pattern in PHP

התבנית בדרכ משמשת לייצוג "יישות" עם או בלי BUSINESS LOGIN, לדוגמה "לקוח", "מטבע","ארנק","תאריך"

דוגמה טובה היא "לקוח" - ללקוח יש שם פרטי, שם משפחה, טלפון, מס מזהה:

הדבר המשותף לכל הלקוחות הוא מבנה הנתונים שלהם, לכולם יש שם, שם משפחה, טלפון (אפילו אם חלק מהמידע חסר, המבנה זהה בכולם),
המבדיל אותם הוא הערכים - ללקוח אחד קוראים אבי וללקוח השני קוראים יחזקל.
Value Object עוזרת לנו להבדיל בין מספר עצמים שרצים במקביל.

ייתרון עיקרי של שימוש בתבנית VALUE OBJECT הוא היכולת להשתמש בקלות באותו CLASS של קוד במערכות שונות.

הדבר העיקרי שחשוב לזכור הוא שאם אנו משנים ערך של יישות VALUE OBJECT אחת, שהישויות הרצות האחרות לא יישתנו - אם נשנה את השם של אבי לאביב, חשוב לשמור שליחזקל לא ייקרה כלום.

בשביל להמחיש, אנו נקח דוגמה פשוטה של מטבע "שקל ישראלי" וניישם אותו בתבנית VALUE OBJECT.

<?php
class shekel
{
  protected $amount;

  public function __construct($amount=0)
  {
    $this->amount=(float)$amount;
  }

 public function getamount()
 {
  return $this->amount;
 }

 public function addtoamount($shekel)
 {
   return new shekel($this->amount + $shekel->getamount());
 }

}

?>

 

הבהרות ודגשים:

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

בהצלחה!

מאת אביב רונן בPHP

הוספת תגובה