הנדסה אזרחית & הנדסה מבנית
יישום דפוס Data Mapper כדי להפחית את הלוגיקה העסקית מ- Persistence Layer ב-PHP
Table of Contents
דפוס Data Mapper הוא טכניקת עיצוב המשמשת בפיתוח תוכנה, במיוחד באפליקציות PHP, כדי להפריד לוגיקה עסקית מן ההתמדה של נתונים.הפרדה זו משפרת את יכולת שמירת הקוד, את יכולת הבדיקה ואת ההיקף על ידי בידוד האופן שבו הנתונים מאוחסנים ונשנים מהכללים העסקיים המרכזיים.
הבנת תבנית Data Mapper
הרעיון המרכזי של דפוס Data Mapper הוא להשתמש בשכבה ייעודית - מה שנקרא Data Mapper - להעביר נתונים בין אובייקטים למסד נתונים ללא חפצים הדרושים כדי לדעת על פרטי מסד הנתונים. גישה זו מנוגדת לתבנית Active Record, שבו אובייקטים עצמם מטפלים בביצוע פעולות מסד נתונים.
היתרונות של שימוש ב- Data Mapper Pattern
- (ב) ⁇ :0) ,00: 1FLT מפריד בין ההיגיון העסקי מקוד גישה לנתונים.
- (ב) ניתן לבחון את ההיגיון העסקי באופן עצמאי ממסד הנתונים.
- (FLT:0) lexibility: שינויים במאגרי מידע או שיטות אחסון דורשים שינויים מינימליים בלוגיקה עסקית.
- (ב) ⁇ :0) ,ההחזקות: 1FLT: 1 הפרדה ברורה של חששות מפשטות ניהול קוד.
יישום מיפוי הנתונים ב-PHP
יישום דפוס Data Mapper כולל יצירת שלושה מרכיבים עיקריים:
- (ב) ,0) ,"אובייקטים של דו-קיום": 1FLT מייצג את הגופים העסקיים.
- (ב) עיין ב-[[1924]]: [[1924]]]], [[1924]]]]
- (ב) עיין ב[[1924]], [[1924]]]], [[1924]]]]
דוגמא: יעילות המשתמש
נניח שיש לנו כיתת משתמשים המייצגת משתמש ביישום שלנו:
class User {
public $id;
public $name;
public $email;
public function __construct($id = null, $name = '', $email = '') {
$this->id = $id;
$this->name = $name;
$this->email = $email;
}
}
יצירת מחלקת נתונים
ממפה הנתונים עבור מחלקת המשתמש מנהלת אינטראקציות מסד נתונים:
class UserMapper {
protected $pdo;
public function __construct(PDO $pdo) {
$this->pdo = $pdo;
}
public function findById($id) {
$stmt = $this->pdo->prepare('SELECT * FROM users WHERE id = :id');
$stmt->execute([':id' => $id]);
$row = $stmt->fetch();
if ($row) {
return new User($row['id'], $row['name'], $row['email']);
}
return null;
}
public function save(User $user) {
if ($user->id) {
$stmt = $this->pdo->prepare('UPDATE users SET name = :name, email = :email WHERE id = :id');
$stmt->execute([
':name' => $user->name,
':email' => $user->email,
':id' => $user->id
]);
} else {
$stmt = $this->pdo->prepare('INSERT INTO users (name, email) VALUES (:name, :email)');
$stmt->execute([
':name' => $user->name,
':email' => $user->email
]);
$user->id = $this->pdo->lastInsertId();
}
}
}
מסקנה
יישום דפוס Data Mapper ב-PHP מסייע ליצור ארכיטקטורה נקייה על ידי decoupling לוגיקה עסקית מאחסון נתונים.גישה זו לא רק הופכת את הקוד שלך ליותר אמין, אלא גם מקלה על בדיקות ושינויים עתידיים, הבטחת היישום שלך נשאר חזק והתאמה.