Data Mapper -malli on suunnittelutekniikka, jota käytetään ohjelmistojen kehittämisessä, erityisesti PHP-sovelluksissa, erottamaan liiketoimintalogiikka datan pysyvyydestä. Tämä erottelu parantaa koodien säilyvyyttä, testattavuutta ja skaalautuvuutta eristämällä sitä, miten tietoja tallennetaan ja haetaan liiketoiminnan ydinsäännöistä.

Datamapperin kuvion ymmärtäminen

Data Mapper -mallin ydinajatuksena on käyttää Data Mapper-nimisen kerroksen käyttöä siirtääkseen tietoja esineiden ja tietokannan välillä ilman, että kohteiden tarvitsee tietää tietokannan yksityiskohdista. Tämä lähestymistapa on ristiriidassa Active Record -mallin kanssa, jossa esineet itse käsittelevät tietokantatoimintoja.

Data Mapper-mallin käytön edut

  • Irrotetaan:[.
  • Tasapaino:[ Liiketoiminnan logiikkaa voidaan testata tietokannasta riippumatta.
  • Leikkaavuus:[ Tietokannan skeema- tai tallennusmenetelmien muutokset edellyttävät minimaalisia muutoksia liiketoiminnan logiikkaan.
  • Kestävyys:[] Huolen selkeä erottaminen yksinkertaistaa koodien hallintaa.

Data Mapperin toteuttaminen PHP:ssä

Data Mapper -mallin täytäntöönpano edellyttää kolmen pääkomponentin luomista:

  • Domain Objects: Edustaa liike-elämän yksiköitä.
  • Tietokoneluokat:[ Käsitellään tietojen siirtoa esineiden ja tietokannan välillä.
  • Tietokantataso: [ Varsinainen tietokantayhteys ja kyselyt.

Esimerkki: Käyttäjäyksikkö

Oletetaan, että meillä on käyttäjäluokka, joka edustaa käyttäjää sovelluksessamme:

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 -luokan luominen

Käyttäjäluokan Data Mapper hallinnoi tietokantavuorovaikutuksia:

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

Päätelmät

Data Mapper -mallin toteuttaminen PHP:ssä auttaa luomaan puhtaan arkkitehtuurin erottamalla liiketoimintalogiikan datan tallennuksesta. Tämä lähestymistapa ei ainoastaan tee koodistasi ylläpidettävissä olevan vaan myös helpottaa testausta ja tulevia muutoksia, varmistaen, että sovelluksesi pysyy vahvana ja mukautuvana.