Как отделить логику от взаимодействия с базой данных? Всем привет!
Подскажите, пожалуйста, как правильно организовать архитектуру классов &
Пишу на PHP.
Я хочу отделить логику от взаимодействия с базой данных.
Например, у меня есть класс для работы с некоторой сущностью, который создает коллекциюclass Items implements Iterator {
// здесь методы для работы с коллекцией

// возможно здесь и методы для фильтрации, сортировки по коллекции ?
}
и класс для работы с БД.class DbItems {
// здесь методы , внутри которых будут запросы к БД
}
Как правильно связать эти классы между собой?
Так же необходима возможность покрывать данные классы автотестами.

21 Авг 2019 в 06:31
224 +1
0
Ответы
1

Для отделения логики от взаимодействия с базой данных в PHP можно использовать паттерн проектирования Repository.

Создайте класс ItemRepository, который будет содержать методы для работы с сущностями, например, методы для получения всех элементов, добавления элемента, удаления элемента и т.д.

class ItemRepository {
private $db;
public function __construct(DbItems $db) {
$this->db = $db;
}
public function getAllItems() {
return $this->db->getAll();
}
public function addItem($item) {
return $this->db->add($item);
}
// Добавьте другие методы для работы с сущностями здесь
}

Затем создайте экземпляр класса DbItems и передайте его в конструктор ItemRepository.

$db = new DbItems();
$itemRepository = new ItemRepository($db);

Используйте ItemRepository для работы с сущностями, таким образом, логика и взаимодействие с базой данных будут отделены.

Для тестирования классов вы можете использовать фреймворк для юнит-тестирования, например, PHPUnit. С помощью него вы сможете написать тесты для методов ItemRepository, проверить их работоспособность и корректность.

20 Апр в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 89 997 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир