Шаблон Data Mapper + Observer - PullRequest
       12

Шаблон Data Mapper + Observer

7 голосов
/ 04 февраля 2009

Я создаю приложение на PHP и использую шаблон отображения данных для доступа к БД. Я подумывал об использовании шаблона Observer, чтобы все мои средства отображения наблюдали за созданными ими сущностями, чтобы они могли автоматически сохранять любые изменения обратно в базу данных без необходимости разбора их вручную.

Мне было просто интересно, хорошая ли это идея или плохая практика и т. Д.? 1003 *

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

Спасибо, Jack

Ответы [ 2 ]

3 голосов
/ 04 февраля 2009

Определенно звучит как хорошая идея для меня. То, что вы делаете, похоже на шаблон Unit Of Work , предназначенный для отслеживания изменений, которые вы внесли в сопоставленные объекты, и фиксации (обычно в виде одной транзакции) после того, как вы закончите.

Я считаю, что такие проекты, как Outlet и Repose предоставляют это для вас в PHP, а также устраняют некоторые трудности при отображении, но я лично ими не пользовался.

Кроме того, похоже, что иерархии ваших объектов могут выиграть от того, что их можно рассматривать как Агрегаты , если вы хотите пойти по пути Domain Driven Design и воспользоваться его чистой изоляцией. приносит.

-

Редактировать: похоже, что eZ Components имеет довольно полнофункциональное решение PHP ORM , и Doctrine 2.0 также формируется таким же образом.

-

Редактировать 2: я не стал бы смотреть на Пропел или Креол для той проблемы, которую вы обсуждаете. Creole - это не ORM, а скорее уровень абстракции БД, схожий с PDO, и теперь проект официально "мертв". Propel использует шаблон ActiveRecord, а не шаблон DataMapper, поэтому ваши доменные объекты несут гораздо большую ответственность за постоянство, и AFAIK не включает в себя средство Unit Of Work.

0 голосов
/ 05 февраля 2009

Если вы ищете в ORM проверить Propel и Creole .

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