Определенно звучит как хорошая идея для меня. То, что вы делаете, похоже на шаблон 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.