PHP ООП: уровень бизнес-логики - уровень БД - PullRequest
6 голосов
/ 15 апреля 2011

Что может быть хорошим дизайном для наложения между объектами бизнес-логики и базой данных с использованием ООП?

Ответы [ 2 ]

9 голосов
/ 15 апреля 2011

Любой из них будет работать ( из POEAA Фаулера ):

Архитектурные шаблоны источника данных:

  • Шлюз табличных данных : Объект, который действует как шлюз к таблице базы данных.Один экземпляр обрабатывает все строки в таблице.
  • Шлюз данных строк : Объект, который действует как шлюз для отдельной записи в источнике данных.В каждой строке по одному экземпляру.
  • Активная запись : Объект, который упаковывает строку в таблицу или представление базы данных, инкапсулирует доступ к базе данных и добавляет логику домена.на этих данных.
  • Data Mapper : Слой Mappers, который перемещает данные между объектами и базой данных, сохраняя их независимыми друг от друга и от самого Mapper.

Выбор зависит от того, какой из них вы выбрали (тот же источник):

Шаблоны логики домена:

  • Сценарий транзакции: Организация бизнес-логики по процедурам, где каждая процедура обрабатывает один запрос из презентации
  • Модель домена: Объектная модель домена, котораявключает в себя как поведение, так и данные
  • Модуль таблицы: Один экземпляр, который обрабатывает бизнес-логику для всех строк в таблице или представлении базы данных.
  • Уровень обслуживания: Defобъединяет границу приложения со слоем сервисов, который устанавливает набор доступных операций и координирует ответ приложения на каждую операцию.

В общем, чем ближе ваши бизнес-объекты напоминают схему БДи сфокусирован на операциях CRUD, тем проще может быть ваша модель Data Source Architectural и Doman Logic (хотя это и не обязательно).Если вы столкнулись с большим несоответствием импеданса или большим количеством бизнес-логики, не связанной напрямую с данными БД, то вы можете выбрать модель предметной области / преобразователь данных (а также включить ORM).

2 голосов
/ 15 апреля 2011

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

Таким образом, вы отделяете свой доступ к данным от моделей вашего домена (бизнес-логики) хорошим и простым способом. Если вы немного знакомы с ООП, модель UML на странице, указанной выше, должна прояснить способ подхода и то, как он отделяет логику базы данных от бизнес-логики.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...