PHP OOP: слой бизнес-логики-слой БД
Что может быть хорошим дизайном для наслоения между объектами бизнес-логики и базой данных с помощью ООП?
2 ответов
есть несколько подходов, которые вы можете принять с этим, но один я хотел бы рекомендовать шаблон DataMapper в сочетании с моделями домена. См.на этой странице для получения дополнительной информации.
таким образом, вы отделяете доступ к данным от ваших моделей домена (бизнес-логика) в хорошем и простом способе. Если вы немного знакомы с ООП, модель UML на странице, связанной выше, должна прояснить способ подхода и то, как она отделяет логику базы данных от бизнеса логика.
любой из них будет работать (от POEAA):
Архитектурные Шаблоны Источников Данных:
- "Таблица Данных" Шлюз: объект, который действует как шлюз к таблице базы данных. Один экземпляр обрабатывает все строки в таблице.
- Шлюз Данных Строк: объект, который действует как шлюз к одной записи в источнике данных. Есть один экземпляр на ряд.
- Активная Запись: объект, который обертывает строку в таблице или представлении базы данных, инкапсулирует доступ к базе данных и добавляет логику домена для этих данных.
- Маппер Данных: слой картографов, который перемещает данные между объектами и базой данных, сохраняя их независимыми друг от друга и самого картографа.
какой выбрать зависит от того, какой из них вы выбрали (то же самое источник):
Логические Шаблоны Домена:
- Транзакции Скрипт: организует бизнес-логику по процедурам, где каждая процедура обрабатывает один запрос из презентации
- Модель Домена: объектная модель домена, который включает в себя как поведение, так и данные
- Модуль Стол: один экземпляр, который обрабатывает бизнес-логику для всех строк таблица или представление базы данных.
- Сервис Слой: определяет границу приложения со слоем служб, который устанавливает набор доступных операций и координирует ответ приложения в каждой операции.
В общем, чем ближе ваши бизнес-объекты напоминают схему БД и ориентированы на операции CRUD, тем проще может быть архитектурный шаблон источника данных и логика Doman (это не придется хотя бы). Если у вас много несоответствий импеданса или много бизнес-логики, не связанной непосредственно с данными БД, вы можете выбрать модель домена / Сопоставитель данных (а также включить ORM).