Я всегда работал с различными ORM в прошлом и размещал всю свою логику внутри своих моделей независимо от ее природы - запросы SQL, MongoDB и даже выборку удаленных объектов JSON. Но когда необходимо обеспечить свободные сцепления, чтобы обеспечить высокий уровень проверки, проблемы этой методологии быстро появляются.
Сегодня я читал о разделении моделей на две части: Domain objects
и Data mappers
.
Если я полностью его понял, Domain objects
полностью не знают о используемом хранилище и вместо этого существует для обработки бизнес-логики. Data mappers
, с другой стороны, заботится о сохранении набора данных в Domain objects
в установленном хранилище данных.
Однако мне сложно найти хороший, простой в понимании пример онлайн о том, как работать с DomainObjects и DataMappers в реальном мире.
Будет ли это (ниже показанный код) подходящим способом работы с DomainObjects и DataMappers в моем коде для хранения пользователей или у меня все в голове?
$user = new User_DO;
$userSave = new User_DM;
$userSave->store( $user->add(array('name' => 'John Doe')) );
class User_DO {
function add($array) {
if(!isset($array['name'])) {
throw new Exception("Name must be set");
}
return $array;
}
}
class User_DM {
function store($array) {
MyDatabase::execute("INSERT INTO...");
}
}