Data Mapper modeli, özellikle PHP uygulamaları, veri devam edenden ayrı iş mantığına sahip olmak için kullanılan bir tasarım tekniğidir.Bu ayrılık, kod korumayı geliştirir, test edilebilirliği ve ölçeklenebilirliği sağlar, verinin nasıl depolanır ve temel iş kurallarından alınır.
Data Mapper Pattern'ı Anlayın
Data Mapper modelinin temel fikri, veri Mapper olarak adlandırılan özel bir katman kullanmaktır - nesneler ve veritabanı ayrıntıları hakkında bilgi sahibi olmayan bir veritabanı arasındaki veri transferi.Bu yaklaşım, nesnelerin veritabanı işlemlerinin nerede işlediğine ilişkin yaklaşımlar.
Data Mapper Pattern'ı kullanmanın Faydaları
- [[Düzücü:0)Decoupling:[Dönetici:[Dönetici:0)Veri erişim kodundan ayrı iş mantığı.
- [FONT:0)Testability: İş mantığı veritabanından bağımsız olarak test edilebilir.
- [[Düzgüdü:[Dönetici:[Dönetici:0) Veritabanı şemalarında değişiklikler veya depolama yöntemleri iş mantığına minimum değişiklikler gerektirir.
- [FONT:0)Maintainability:), Endişelerin açık ayrılığı kod yönetimi.
PHP'de Data Mapper'ı uygulama
Data Mapper modelini uygulamak üç ana bileşen yaratmak içerir:
- [FONT:0)Domain Objects:[Döneticileri temsil ediyor.
- [FONT:0)Data Mapper Sınıf:[Döneticiler ve veritabanı arasındaki veri transferi ile ilgili.
- [FONT=0)Database Katman:[Dönetici bağlantı ve sorgular.
Örnek: Kullanıcı Entity
Uygulamamızda bir kullanıcı sınıfı temsil ettiğimizi varsayalım:
class User {
public $id;
public $name;
public $email;
public function __construct($id = null, $name = '', $email = '') {
$this->id = $id;
$this->name = $name;
$this->email = $email;
}
}
Data Mapper Sınıfı oluşturmak
Kullanıcı sınıfı için veri Mapper veritabanı etkileşimleri yönetiyor:
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();
}
}
}
Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç
PHP'deki Veri Mapper modelini uygulamak, veri depolamasından iş mantığıyla temiz bir mimari yaratmaya yardımcı olur. Bu yaklaşım sadece kodunuzu daha fazla korumaz, ancak uygulamanızın sağlam kalmasını ve adapte olmasını sağlar.