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

paurlift
2017.06.08, 10:59
Форум: Архитектура, дизайн, ООП
Тема: Использование в Entity Repository или Domain service
Ответы: 11
Просмотры: 6974

Использование в Entity Repository или Domain service

Всем привет. class Client implements StatefulInterface { private $secirutyIndetifier; private $securityRepository private $stateTransitionManager; private $state; private function __construct( SecurityRepositoryInterface $securityRepository, StateTransitionManagerInterface $stateTransitionManager ) ...
paurlift
2017.02.27, 21:55
Форум: Архитектура, дизайн, ООП
Тема: Рефакторинг фабричного метода
Ответы: 16
Просмотры: 5203

Re: Рефакторинг фабричного метода

P.S. У меня вопрос, не перебор ли это с точки зрения самой задачи? :D P.S.S В псевдокоде могут быть синтаксические ошибки - не было возможности проверить) Вроде гибко получилось, но действительно для такой тривиальной задачи слишком сложно) https://habrahabr.ru/post/321892/ - очень похоже на Ваш ке...
paurlift
2017.02.26, 23:08
Форум: Архитектура, дизайн, ООП
Тема: DDD, связность модулей
Ответы: 41
Просмотры: 14439

Re: DDD, связность модулей

Я в самом первом посте об этом спросил, ElisDN ответил, что использовать его можно везде, это просто удобная замена массивам и я с ним согласен. По определению DTO это объект передачи данных. Передачи между слоями или сервисами. Идеально подходит как замена ассоциативному массиву для передачи больш...
paurlift
2017.02.26, 22:53
Форум: Архитектура, дизайн, ООП
Тема: DDD, связность модулей
Ответы: 41
Просмотры: 14439

Re: DDD, связность модулей

Нужны, нет у меня модели Author как таковой, а есть интерфейс AuthorInterface. Вот и советуем сделать отдельную сущность review\Author вместо интерфейса AuthorInterface. Это если очень хочется сделать review именно отдельной системой. Мне хотелось узнать как подружить 2 модуля в первую очередь и Ва...
paurlift
2017.02.26, 21:04
Форум: Архитектура, дизайн, ООП
Тема: Рефакторинг фабричного метода
Ответы: 16
Просмотры: 5203

Re: Рефакторинг фабричного метода

Не согласен, раз уж пытаться обобщить регистрацию, то нужно ее все-таки разделить по способам: Email&Password Social network Смысл в том что создается по факту один и тот же User, только с разными кол-вами свойств. Но есть свойства, которые есть всегда. Что делать если появляется новый источник...
paurlift
2017.02.26, 19:53
Форум: Архитектура, дизайн, ООП
Тема: Рефакторинг фабричного метода
Ответы: 16
Просмотры: 5203

Re: Рефакторинг фабричного метода

Если будете делать на каждый способ регистрации по методу - нарушите принцип открытости/закрытости. Надо делать отдельный сервис на каждый способ регистрации На данный момент у меня 2 Application сервиса, каждый из которых отвечает (каждый со своим DTO на входе) за свой способ регистрации и оба исп...
paurlift
2017.02.26, 15:59
Форум: Архитектура, дизайн, ООП
Тема: DDD, связность модулей
Ответы: 41
Просмотры: 14439

Re: DDD, связность модулей

ну допустим, но дизайн всего этого престраннейший. Пожалуйста, конкретнее и как бы Вы сделали? Что-то может быть упустил, писал "на коленке". при таком подходе интерфейсы сущностей не нужны. domain\reviews\Author domain\client\Client Нужны, нет у меня модели Author как таковой, а есть инт...
paurlift
2017.02.26, 15:34
Форум: Архитектура, дизайн, ООП
Тема: DDD, связность модулей
Ответы: 41
Просмотры: 14439

Re: DDD, связность модулей

namespase Domain\Service; use Domain\Entity\User\Password; use Domain\Entity\User\Hash; interface PasswordHasher { function hash(Password $password): Hash; function validate(Password $password, Hash $hash): bool; } который работает с VO домена. А реализацию уже делаем в инфраструктуре: namespase In...
paurlift
2017.02.26, 13:01
Форум: Архитектура, дизайн, ООП
Тема: DDD, связность модулей
Ответы: 41
Просмотры: 14439

Re: DDD, связность модулей

Вот чтобы даже об интерфейсах, как-то не очень похоже на правду. У меня при создании комментария на вход приходит AuthorInterface, его реализует клиент или еще кто-то, кто может быть автором чего-либо на сайте, т.е. уже получается модуль отзывов знает о интерфейсах других модулей. потому и знает об...
paurlift
2017.02.25, 16:33
Форум: Архитектура, дизайн, ООП
Тема: DDD, связность модулей
Ответы: 41
Просмотры: 14439

Re: DDD, связность модулей

Реализация доменных сервисов - это инфраструктура? именно собственно название само за себя говорит. вы создаете рабочую инфраструктуру для работы доменного слоя. Можете пример какой-нибудь привести? не понимаю, какие примеры надо? тут все как везде. интерфейс, реализация Реализация репозитория - да...
paurlift
2017.02.24, 22:43
Форум: Архитектура, дизайн, ООП
Тема: DDD, связность модулей
Ответы: 41
Просмотры: 14439

Re: DDD, связность модулей

Вот чтобы даже об интерфейсах, как-то не очень похоже на правду. У меня при создании комментария на вход приходит AuthorInterface, его реализует клиент или еще кто-то, кто может быть автором чего-либо на сайте, т.е. уже получается модуль отзывов знает о интерфейсах других модулей. потому и знает об...
paurlift
2017.02.24, 22:26
Форум: Архитектура, дизайн, ООП
Тема: DDD, связность модулей
Ответы: 41
Просмотры: 14439

Re: DDD, связность модулей

1.1) На сколько корректно когда entity из одного модуля создает entity из другого модуля? Если такое необходимо, то это у Вас один модуль. Если один, то как бы его Вы назвали и где бы Вы создавали отзыв? Отзыв могут оставлять не только клиенты. Да и клиенты еще могут писать на сайт посты на форум, ...
paurlift
2017.02.24, 21:37
Форум: Архитектура, дизайн, ООП
Тема: DDD, связность модулей
Ответы: 41
Просмотры: 14439

Re: DDD, связность модулей

По поводу интерфейсов. Никакие два модуля не могут ничего знать друг о друге. Даже об интерфейсах. Вот чтобы даже об интерфейсах, как-то не очень похоже на правду. У меня при создании комментария на вход приходит AuthorInterface, его реализует клиент или еще кто-то, кто может быть автором чего-либо...
paurlift
2017.02.23, 15:34
Форум: Архитектура, дизайн, ООП
Тема: DDD, связность модулей
Ответы: 41
Просмотры: 14439

DDD, связность модулей

Всем привет! Накопилось много вопросов, по которым с коллегами не можем прийти к однозначному мнению. Хотелось бы спросить мнение у форумчан (часто встречаю много полезного на этом форуме) 1) Такой пример - клиент оставляет отзыв на сайте. namespace domain/client; use domain/review/Review; use domai...
paurlift
2017.02.17, 10:03
Форум: Архитектура, дизайн, ООП
Тема: Методы Entity
Ответы: 5
Просмотры: 2657

Re: Методы Entity

Не должно быть анемичных сеттеров. А геттеры вреда не приносят. Гетеры не приносят вреда, но использование приставки get, кажется, излишним. И это как-то не доменно что-ли. Но наверно действительно не принципиально. В сущностях предпочитаю называть явно getName(), isDraft(), draft(). Иначе не понят...
paurlift
2017.02.17, 09:57
Форум: Архитектура, дизайн, ООП
Тема: Методы Entity
Ответы: 5
Просмотры: 2657

Re: Методы Entity

zelenin писал(а): 2017.02.16, 23:21 в этой ветке много тем по ddd (почти все)
Везде примеры с set и get, поэтому и спросил
zelenin писал(а): 2017.02.16, 23:21 где угодно, лишь бы сущность была валидна
Мне казалось, это должно быть где-то в одном месте (фабрике или конструкторе сущности), чтобы сущность была валидна и чтобы не делать проверку в нескольких местах.
paurlift
2017.02.16, 22:54
Форум: Архитектура, дизайн, ООП
Тема: Методы Entity
Ответы: 5
Просмотры: 2657

Методы Entity

В последнее время довольно часто встречаю мнение, что в Entity не должно быть никаких get и set методов. Мне нравится вот такой подход наименования методов. class Client { private $id; private $name; private $surname ; public function __construct($id, $name, $surname ) { $this->id = (int)$id; $this-...
paurlift
2017.01.30, 14:03
Форум: Архитектура, дизайн, ООП
Тема: Reposirory в Yii2?
Ответы: 24
Просмотры: 9067

Re: Reposirory в Yii2?

samdark писал(а): 2017.01.30, 13:15 Смотря как с ними работают. Если по одной через API, то внешними ключами будет логичнее.
Александр, подскажите, пожалуйста, примеры кода выше - это правильный способ в Yii2 делать репозитории (на каждую сущность свой mapper) ?
Может есть какое-то более удачное решение?
paurlift
2017.01.30, 11:17
Форум: Архитектура, дизайн, ООП
Тема: Reposirory в Yii2?
Ответы: 24
Просмотры: 9067

Re: Reposirory в Yii2?

Как мне сохранять и получать aggregate? Получать: if (!$post = $this->db->createCommand('SELECT * FROM post WHERE id = :id')->queryOne([':id' => $id])) { throw new NotFoundException('Post not found.'); } $photos = $this->db->createCommand('SELECT * FROM photos WHERE post_id = :id')->queryAll([':id'...
paurlift
2017.01.30, 10:40
Форум: Архитектура, дизайн, ООП
Тема: Reposirory в Yii2?
Ответы: 24
Просмотры: 9067

Re: Reposirory в Yii2?

1) Проектируйте агрегаты адекватно. Не делайте ненужных связей. Можно для экономии хранить ID связанной сущности вместо её самой, если её поля агрегату не нужны. Либо, в крайнем случае, реализуйте ленивую загрузку. 2) При загрузке сохраняйте копию извлечённого массива $row. При сохранении сравнивай...