Найдено 83 результата

noLogicOnlyWar
2017.12.27, 17:32
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18133

Re: Разделение агрегата

Для определения, какому классу назначить обязанность по логину я бы воспользоваться шаблоном GRASP Information Expert. У кого больше всего данных для выполнения этой операции? У юзера - значит пусть будет User::login(). Несогласен, давайте разберем простейший логин, на вход поступает имя пользовате...
noLogicOnlyWar
2017.12.27, 12:20
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18133

Re: Разделение агрегата

В Implementing domain-driven design можно найти примеры отправки email по доменному событию в application сервисе. Т.е. отправка email не безнес логика? Если доменный эксперт сказал - после n должно быть отправлено сообщение пользователю, то это разве не должно находить отражение в домене? Владелец...
noLogicOnlyWar
2017.12.26, 23:58
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18133

Re: Разделение агрегата

Ну тогда будет сервис с внутренним состоянием, вроде бы нормально.
PS пользуюсь синглтоном, так что не могу ответить.
noLogicOnlyWar
2017.12.26, 13:14
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18133

Re: Разделение агрегата

Ну так а в каком доменном объекте возникнет событие UserLogged ? По моему, это как раз тот случает когда бизнес логика не принадлежит какой либо конкретной сущности, и мы можем разместить ее в сервисе. Соответственно их должно быть минимальное количество. Лучше если их нет вообще. Вот тут не совсем ...
noLogicOnlyWar
2017.12.26, 10:39
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18133

Re: Разделение агрегата

sda писал(а): 2017.12.26, 02:14 А вообще я не понимаю, зачем здесь доменный сервис. Задача решается обычным application сервисом. Например так.
А почему вы против доменного сервиса? Допустим у меня после логина должно выбрасываться доменный евент, как быть?
noLogicOnlyWar
2017.12.26, 00:19
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18133

Re: Разделение агрегата

Ну да, как описал authenticate принимает $authSession, согласен, но login то user'a принимает. Тут меня больше интересует то, что в app layer лежит интерфейс, а реализуется он в infrastructure, это правильный подход? В твоем примере помойму напутанно: 1) SessionAuthenticationService в примере по сут...
noLogicOnlyWar
2017.12.25, 22:47
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18133

Re: Разделение агрегата

Лучше юзера, тк login($user) логично и соответствует терминам предметной области. И должен ли агрегат юзера содержать в себе свои сессии? Или сессия должна содержать юзера? Я за 2й вариант, невижу причин юзеру знать о существование сессии (кстати нужно ли знать домену о существование сессии? видимо ...
noLogicOnlyWar
2017.12.25, 20:45
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18133

Re: Разделение агрегата

В app service буду получать юзера каким то образом, например по токену (или этим должен заниматься инфраструктурный сервис?) и передавать его доменному сервису AuthenticationService. Можно заинжектить в app сервис репозитроий class LoginCommand { public function execute ($dto) { $member = $this->ge...
noLogicOnlyWar
2017.12.25, 19:25
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18133

Re: Разделение агрегата

В теории да, ведь инфраструктура знает о домене, но передачи дто будет нарушить ubiquitous language в терминах которого спроектирован доменный сервис. Думаю так. В любом случае что мешает сохранить цепочку инфраструктура -> app сервис -> доменный сервис? App сервис у нас будет конкретный сценарий пр...
noLogicOnlyWar
2017.12.25, 19:08
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18133

Re: Разделение агрегата

Нет, это доменный сервис
noLogicOnlyWar
2017.12.25, 18:54
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18133

Re: Разделение агрегата

Не, что-то не складывается... Какое поведение у токена может быть? Да ни какого, это просто VO. Да никакого, а в чем не состыковка? Ну юзер тоже сам себя не залогинит в систему, помойму это система (в данном случае authentificator) должна принять решение залогинить юзера или отклонить. Вот чтобы не...
noLogicOnlyWar
2017.12.25, 18:18
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18133

Re: Разделение агрегата

Я бы еще вынес в доменный сервис архивацию/восстановление. У себя так и делал, но у меня сущность и сущность в архиве это 2 разные сущности (через sti) тк сущность в архиве меняет свое поведение и тоже участвует в бизнес логике. Тогда логика из сущности перекочует в сервис. Но она все равно будет ря...
noLogicOnlyWar
2017.12.25, 18:00
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18133

Re: Разделение агрегата

Нет, думаю пароль должен быть в юзере, но генерация пароля в доменном сервисе который будет реализовываться в инфраструктурном слое, скорее всего. Кстати по поводу bounded context, тема сложна, возможно frontend и admin можно рассматривать как 2 разных контекста, но тогда соответственно у нас будут ...
noLogicOnlyWar
2017.12.25, 17:36
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18133

Re: Разделение агрегата

Вот с контекстами я практически незнаком. Есть пример выделения контекстов с примерами организации этого всего в коде? примеры с bounded context есть в конце ddd in php, правда к вашему вопросу это не особо применимо, помойму. Я это к тому что домен не должен знать в админке ли его модель используе...
noLogicOnlyWar
2017.12.25, 16:53
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18133

Re: Разделение агрегата

Ну так почему не перенести ответственность в другой класс? Как еще делать декомпозицию год объекта? Токенами должен обязательно юзер управлять?
И еще по сути вопроса, админка/фронтенд это ведь чисто инфраструктурные вещи, в домене у вас контекст в котором работает модель = bounded context.
noLogicOnlyWar
2017.12.25, 16:34
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18133

Re: Разделение агрегата

login, logout изменяют внутреннее состояние пользователя?
noLogicOnlyWar
2017.12.25, 11:16
Форум: Архитектура, дизайн, ООП
Тема: Разделение агрегата
Ответы: 63
Просмотры: 18133

Re: Разделение агрегата

login, logout, authenticate точно можно вынести в доменный сервис, Authentifier какой нибудь.
Так же archive/reinstate, если я правильно понял, тоже можно в доменный сервис. Ну и revokeAccess, хотя тут по разному можно.
noLogicOnlyWar
2017.12.23, 21:53
Форум: Архитектура, дизайн, ООП
Тема: Аггрегат и коллекция
Ответы: 11
Просмотры: 3933

Re: Аггрегат и коллекция

Хм, да, так и есть, спасибо большое что прояснили. Теоретически, в контесте разрабатываемого модуля, я думаю можно рассматривать и Y как агрегат, то есть множество Y находятся в одном контексте X. Тогда задаче по смене владельца будет решаться $y->changeOwner($newContext) и вся логика тогда уйдет в ...
noLogicOnlyWar
2017.12.23, 20:59
Форум: Архитектура, дизайн, ООП
Тема: Аггрегат и коллекция
Ответы: 11
Просмотры: 3933

Re: Аггрегат и коллекция

Если я вас правильно понял то должен работать такой вот код : $y = $x1->ys->get(0); $x1->ys->remove(0); $x2->ys->add($y); $em->flush(); Но он не работает, выполняется как ожидаю только если добавить перед флашем $y->changeOwner($x); Настройки мапинга дефолтные из дока, за исключением того что orphan...
noLogicOnlyWar
2017.12.23, 18:50
Форум: Архитектура, дизайн, ООП
Тема: Аггрегат и коллекция
Ответы: 11
Просмотры: 3933

Re: Аггрегат и коллекция

Таблица X, таблица Y с полем x_id для связи