Перейти до вмісту

Шаблон сховища в XOOPS

2.5.x ✅ 4.0.x ✅

Шаблон сховища — це шаблон доступу до даних, який абстрагує операції бази даних, забезпечуючи чистий інтерфейс для доступу до даних. Він діє як посередник між рівнями бізнес-логіки та відображення даних.

Шаблон репозиторію надає:

  • Абстрагування деталей реалізації бази даних — Легке знущання для модульного тестування
  • Логіка централізованого доступу до даних
  • Гнучкість зміни бази даних без впливу на бізнес-логіку — Багаторазова логіка доступу до даних у програмі

Коли використовувати репозиторії

Section titled “Коли використовувати репозиторії”

Використовуйте репозиторії, коли:

  • Передача даних між рівнями програми
  • Потрібно змінити реалізацію бази даних
  • Написання тестованого коду з макетами
  • Абстрагування шаблонів доступу до даних
<?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
}
}
?>

Використання в службах

Section titled “Використання в службах”
<?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);
}
}
?>
  • Використовуйте інтерфейси для визначення контрактів сховища
  • Кожен репозиторій обробляє один тип сутності
  • Зберігайте бізнес-логіку в службах, а не в сховищах
  • Використовуйте об’єкти сутності для відображення даних
  • Створення відповідних винятків для недійсних операцій

Пов’язана документація

Section titled “Пов’язана документація”

Дивіться також:


Теги: #репозиторій-паттерн #доступ до даних #шаблони-проектування #розробка-модуля