В последние дни меня интересует DDD (Domain Driven Design), но я не могу понять, кто занимается созданием и проверкой сущностей.Я разобью этот вопрос, чтобы охватить разные сценарии.
Обычная сущность (возможно, с объектом значения).В качестве примера рассмотрим пользователя, который идентифицирован по электронной почте.У меня есть UserFactory, которая получает массив данных (возможно, из формы POST) и возвращает мне новый UserEntity.Должна ли фабрика проверять целостность данных (например, строка, указанная как электронная почта, представляет собой реальную электронную почту, пароли в поле пароля 1 и поле 2 совпадают и т. Д.)?Должна ли фабрика подтвердить, что такого пользователя уже нет (мы не хотим регистрировать двух пользователей с одним и тем же адресом электронной почты)?Если да, то должен ли он сделать это сам или с помощью UserRepository?
Совокупный объект.Предположим, у нас есть сущность Post и сущности Comments.Я хочу получить пост 12 со всеми его комментариями, поэтому я делаю что-то вроде
$ post = $ postRepository-> getById (12);
Как должен быть getByIdреализованы?как это:
public function getById($id) {
$postData = $this->magicFetchFromDB($id);
$comments = (new CommentRepository())->getForPost(12);
return new PostEntity($postData, $comments);
}
Или, может быть, пост, отвечающий за ленивое создание своих комментариев, что-то вроде:
class PostEntity {
public function getComments() {
if(is_null($this->_comments)) $this->_comments = (new CommentRepository())->getForPost($this->_id);
return $this->_comments;
}
}
?Я очень заблудился здесь, и не хватает информации с примерами для DDD в PHP, поэтому любая помощь будет оценена по достоинству!
Большое спасибо, skwee.