ونموذج البيانات المتحرك هو أسلوب تصميمي يستخدم في تطوير البرامجيات، ولا سيما في تطبيقات برنامج العمل الإنساني، لفصل منطق الأعمال عن استمرار البيانات، وهذا الفصل يحسن من إمكانية الاحتفاظ بالمدونة، والقابلية للاختبار، والقابلية للتصعيد عن طريق عزل البيانات عن قواعد الأعمال الأساسية واسترجاعها.

فهم نمط البيانات

والفكرة الأساسية لنمط مابر البيانات هي استخدام طبقة مخصصة تسمى " البيانات مابر - لنقل البيانات بين الأجسام وقاعدة البيانات دون أن تكون الأجسام التي تحتاج إلى معرفة تفاصيل قاعدة البيانات، وهذا النهج يتناقض مع نمط السجل النشط، حيث يتعامل الجسمان نفسهان مع عمليات قاعدة البيانات.

فوائد استخدام نمط البيانات

  • Decoupling:] Separates business logical from data access code.
  • testingability:] Business logical can be tested independently of the database.
  • Flexibility:] Changes in database schema or storage methods require minimal modifications to business logical.
  • Maintainability:] Clear separation of concerns simplifies code management.

تنفيذ مابر البيانات في برنامج العمل الإنساني

ويشمل تنفيذ نمط مابر البيانات إنشاء ثلاثة عناصر رئيسية:

  • Domain Objects:] Represent the business entities.
  • Data Mapper Classes:] Handle data transfer between objects and the database.
  • Database Layer:] The actual database connection and queries.

مثال: هيئة المستعملين

افترض ان لدينا صف مستعمل يمثل مستعملا في تطبيقنا

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();
 }
 }
}

خاتمة

إن تنفيذ نمط مابر البيانات في PHP يساعد على إنشاء هيكل نظيف عن طريق فصل منطق الأعمال التجارية عن تخزين البيانات، وهذا النهج لا يجعل شفرتها أكثر قابلية للاستمرار فحسب، بل ييسر أيضا إجراء الاختبارات والتعديلات المقبلة، بما يكفل استمرار تطبيقك في القوة والتكيف.