Духовность™
Продвинутый новичок
Зачем нужен datamapper?
В одной из тем прочел следующее: Меня вот сразу насторожил факт присутствия обращения к БД в классах, которые по-моему являются просто контейнерами данных.
Я так понял, что именно для разделения данных объекта (модели) и методов для работы с ними, и придумали DataMapper:
Так вот, мне не понятно, а в чем западло хранить в одном классе методы для работы с этими данными и их свойства, не делая это разделение?
Минус в этом я вижу один - это разрастание кода класса модели , когда данные класса нужно будет писать во множество таблиц, в разных вариациях. Но есть ли большая разница, делать кучу mapper-ов или создать один большой класс-модель с кучей этих самых методов?
Т.е насколько я понимаю при использовании mapper-s:
а можно было сделать и так:
В одной из тем прочел следующее: Меня вот сразу насторожил факт присутствия обращения к БД в классах, которые по-моему являются просто контейнерами данных.
Я так понял, что именно для разделения данных объекта (модели) и методов для работы с ними, и придумали DataMapper:
Т.е. грубо говоря класс модели нужно оформить как набор свойств и тривиальных операций типа set/get, а mapper уже должен всё это дело в базу писать.Суть шаблона Data Mapper – это класс, который транслирует атрибуты и/или методы доменного объекта в поля таблицы базы данных и наоборот.
Так вот, мне не понятно, а в чем западло хранить в одном классе методы для работы с этими данными и их свойства, не делая это разделение?
Минус в этом я вижу один - это разрастание кода класса модели , когда данные класса нужно будет писать во множество таблиц, в разных вариациях. Но есть ли большая разница, делать кучу mapper-ов или создать один большой класс-модель с кучей этих самых методов?
Т.е насколько я понимаю при использовании mapper-s:
PHP:
class User
{
// свойства класса
// методы get/set
}
PHP:
class UserMapper
{
public function save();
public function delete();
}
PHP:
class UserGroupMapper
{
public function save_to_group();
public function delete_from_group();
}
PHP:
class User
{
// свойства класса
// методы get/set
public function save();
public function delete();
public function save_to_group();
public function delete_from_group();
}

