Skip to content

Corak Repositori dalam XOOPS

2.5.x ✅ 4.0.x ✅

Tidak pasti sama ada ini corak yang betul?

Lihat Memilih Corak Akses Data untuk mendapatkan pepohon keputusan yang membandingkan pengendali, repositori, perkhidmatan dan CQRS.

Corak Repositori ialah corak capaian data yang mengabstraksi operasi pangkalan data, menyediakan antara muka yang bersih untuk mengakses data. Ia bertindak sebagai orang tengah antara logik perniagaan dan lapisan pemetaan data.

Corak Repositori menyediakan:

  • Abstraksi butiran pelaksanaan pangkalan data
  • Mudah mengejek untuk ujian unit
  • Logik capaian data terpusat
  • Fleksibiliti untuk menukar pangkalan data tanpa menjejaskan logik perniagaan
  • Logik akses data boleh guna semula merentas aplikasi## Bila Menggunakan Repositori

Gunakan Repositori apabila:

  • Memindahkan data antara lapisan aplikasi
  • Perlu menukar pelaksanaan pangkalan data
  • Menulis kod yang boleh diuji dengan olok-olok
  • Abstrak corak capaian 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 antara muka untuk menentukan kontrak repositori
  • Setiap repositori mengendalikan satu jenis entiti
  • Simpan logik perniagaan dalam perkhidmatan, bukan repositori
  • Gunakan objek entiti untuk pemetaan data
  • Buang pengecualian yang sesuai untuk operasi yang tidak sah

Lihat juga:


Tag: #corak-repositori #akses data #corak-rekaan #pembangunan-modul