Lewati ke konten

Pola Repositori di XOOPS

2.5.x ✅ 4.0.x ✅

Pola Repositori adalah pola akses data yang mengabstraksi operasi database, menyediakan antarmuka yang bersih untuk mengakses data. Ini bertindak sebagai perantara antara logika bisnis dan lapisan pemetaan data.

Pola Repositori menyediakan:

  • Abstraksi detail implementasi database
  • Mudah diejek untuk pengujian unit
  • Logika akses data terpusat
  • Fleksibilitas untuk mengubah database tanpa mempengaruhi logika bisnis
  • Logika akses data yang dapat digunakan kembali di seluruh aplikasi

Gunakan Repositori ketika:

  • Mentransfer data antar lapisan aplikasi
  • Perlu mengubah implementasi database
  • Menulis kode yang dapat diuji dengan tiruan
  • Mengabstraksi pola akses data
<?php
// Define repository interface
interface UserRepositoryInterface
{
public function find($id);
public function findAll($limit = null, $offset = 0);
public function findBy(array $criteria);
public function save($entity);
public function update($id, $entity);
public function delete($id);
}
// Implement repository
class UserRepository implements UserRepositoryInterface
{
private $db;
public function __construct($connection)
{
$this->db = $connection;
}
public function find($id)
{
// Implementation
}
public function save($entity)
{
// Implementation
}
}
?>
<?php
class UserService
{
private $userRepository;
public function __construct(UserRepositoryInterface $userRepository)
{
$this->userRepository = $userRepository;
}
public function registerUser($username, $email, $password)
{
// Check if user exists
if ($this->userRepository->findByUsername($username)) {
throw new \InvalidArgumentException('Username exists');
}
// Create user
$user = new User();
$user->setUsername($username);
$user->setEmail($email);
$user->setPassword($password);
return $this->userRepository->save($user);
}
}
?>
  • Gunakan antarmuka untuk menentukan kontrak repositori
  • Setiap repositori menangani satu tipe entitas
  • Pertahankan logika bisnis dalam layanan, bukan repositori
  • Gunakan objek entitas untuk pemetaan data
  • Lemparkan pengecualian yang sesuai untuk operasi yang tidak valid

Lihat juga:


Tag: #pola-repositori #akses-data #pola-desain #pengembangan-module