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.
Konsep Repositori
Section titled “Konsep Repositori”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
Corak Pelaksanaan
Section titled “Corak Pelaksanaan”<?php// Define repository interfaceinterface 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 repositoryclass UserRepository implements UserRepositoryInterface{ private $db;
public function __construct($connection) { $this->db = $connection; }
public function find($id) { // Implementation }
public function save($entity) { // Implementation }}?>Penggunaan dalam Perkhidmatan
Section titled “Penggunaan dalam Perkhidmatan”<?phpclass 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); }}?>Amalan Terbaik
Section titled “Amalan Terbaik”- 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
Dokumentasi Berkaitan
Section titled “Dokumentasi Berkaitan”Lihat juga:
- MVC-Corak untuk penyepaduan pengawal
- Lapisan Perkhidmatan untuk pelaksanaan perkhidmatan
- DTO-Corak untuk objek pemindahan data
- Ujian untuk ujian repositori
Tag: #corak-repositori #akses data #corak-rekaan #pembangunan-modul