
Sergey
28.03.2017
08:37:37
если слышал есть такое понетия - стоимость перевода. Это мол когда ты переводишь что-то во что-то смысл теряется немного

Boris
28.03.2017
08:37:47

Sergey
28.03.2017
08:37:55

Sergey
28.03.2017
08:38:04
DDD как раз и форсит что бы ты в коде использовал единый язык, тот язык который ты составляешь общаясь с представителями бизнес.

Google

Sergey
28.03.2017
08:38:09

Boris
28.03.2017
08:38:39
эт тоже было)
но это все тоже лирика имхо )

Sergey
28.03.2017
08:39:06
не, это на самом деле важно особенно на проектах где сложный домен

Boris
28.03.2017
08:39:09
кароч надо перечитать ддд книги )
вновь

Sergey
28.03.2017
08:39:12
или не сложный, но какой-то специфичный
просто у большинства DDD ассоциируется тупо со слоеными архитектурами. Что не есть правда

Boris
28.03.2017
08:40:07
кстати по гескогональной архитектуре никто не упарывался на продакшине?
а то у меня дальше просмотра лекции не пошло

Sergey
28.03.2017
09:28:01
а то у меня дальше просмотра лекции не пошло
ну тип идея простая. У тебя есть слои, в частности внутри у тебя приложенька а снаружи инфраструктура. Ну и все это между собой связано через инверсию зависимостей (порты на стороне слоя приложеньки и адаптеры к этим портам в слое инфраструктуры)

Google

Sergey
28.03.2017
09:29:15
профит - ты можешь крутить и вертеть инфраструктурой как хочешь

Aleh
28.03.2017
09:30:38

Like
28.03.2017
09:31:57
Зачем так много умных слов?(

Sergey
28.03.2017
09:44:59
сча меньше почему?
потому что начал эксперементировать и в итоге у меня сильно смешалась инфраструктура и логика, хотя это казалось удобным
ну то есть там по мелочи
я в эту пятницу со знакомым выпивал как раз обсуждали вопрос гексагональной архитектуры и я там ему поведал про тот ад который я у себя по итогу развел когда решил "попробовать поприменять дабл диспатч и позапихивать явно логику в домен"
ну короч я там по итогу и области ответственности посмешивал

Sergey
28.03.2017
11:26:14
Всем привет, я уже как-то спрашивал, но походу суть не уловил. Объясните правильный подход к flush в доктрине. В какой момент грамотно делать flush. Вот например есть репозиторий с юзерами, там метод add. В нем делать только persist? или persist и flush?

Roman
28.03.2017
11:27:25
в репозах лучше не делать ни персист ни флаш, я так думаю

Sergey
28.03.2017
11:27:50
почему?

Roman
28.03.2017
11:27:53
ну персист еще ладно
но в идеале флаш должен быть один перед отдачей респонза
хотя подходы у всех разные, некоторые любят флашть после персиста
я сторонник флаша в контроллере перед return

Sergey
28.03.2017
11:33:07
флаш нужно делать чем раньше тем лучше, т.к как только закончилась бизнес транзакция
а не собирать все в кучу

Aleh
28.03.2017
11:35:42
persist в репе норм
у вас ж стопро есть методы аля public function add

Sergey
28.03.2017
11:36:25

Sergey
28.03.2017
11:36:38
уже были набросы на эту тему, даже окрамиус сказал persist/flush внутри метода репоса эт ок

Sergey
28.03.2017
11:36:56
я так понимаю добавить пользователя это бизнес транзакция?)

Google

Sergey
28.03.2017
11:37:04

Roman
28.03.2017
11:37:05
да, вполне

Sergey
28.03.2017
11:37:06
без UoW

Roman
28.03.2017
11:37:13
вопрос в том где она заканчивается

Sergey
28.03.2017
11:37:32
у меня есть сервисы хэнделы которые жестко определяют границу бизнес транзакции
RegisterUserHandler например

Sergey
28.03.2017
11:37:39
чем раньше ты закроешь транзакцию, тем лучше
начать транзакцию в одном месте, а закончить в другом.. это забавная стрельба по ногам

Sergey
28.03.2017
11:37:57

Sergey
28.03.2017
11:40:38
RegisterUserHandler внутри собирает только то что касается регистрации юзера верно? Может ли быть внутри еще бизнес транзакция?

Roman
28.03.2017
11:45:30
принимание реквеста, его обработка и сохранение в базу - это одна транзакция

Sergey
28.03.2017
11:45:55
ты не путай жизненный цикл запроса и транзакции в базу

Sergey
28.03.2017
11:47:08
иногда это больше одной бизнес транзакции

Roman
28.03.2017
11:47:41
не путаю
это простой бизнес-кейс
принять данные из реквеста, их обработать и сохранить
больше одной - это если надо разослать мыло с подтверждением например
это я так понимаю

Sergey
28.03.2017
11:51:17

Google

Sergey
28.03.2017
11:51:41
а несколько юз-кейсов за один запрос, это например импорт товаров

Boris
28.03.2017
11:57:38
а доктрина , что на 5 персистов и 1 флаш все равно шлет 5 запросов ,А не 1 балк инсерт к примеру?

Sergey
28.03.2017
11:58:23
да, 5 запросов

Sergey
28.03.2017
12:03:57
потому что bulk insert не умеют все СУБД которые хочет поддерживать доктрина

Boris
28.03.2017
12:06:31
https://github.com/stas29a/doctrine2
кто-то пробовал?

Sergey
28.03.2017
12:08:15

Sergey
28.03.2017
12:08:50
кто-то пробовал?
чет не хочется юзать форк доктрины для решения одной маленькой проблемки

Admin
ERROR: S client not available

Sergey
28.03.2017
12:09:05
если бы он кастомный персистер сделал и дал возможность его подменять, то было бы норм

Sergey
28.03.2017
12:11:28
кстати, а он делал реквест в доктрину? что они сказали?

Sergey
28.03.2017
18:17:12
я поковырялся в доктрине и она грустна внутри
очень грустна(
изучил как работают гидраторы и мэппинг результатов
расширять это добро боль

Sergey
28.03.2017
18:20:17
и твой пулреквест никто не примет)

Sergey
28.03.2017
18:20:32
ну я как бы пока и не собираюсь

Aleh
28.03.2017
18:20:39

Sergey
28.03.2017
18:20:43
я уже понял что на ближайшие пол года контрибьютить в доктрину смысла нет

Google

Sergey
28.03.2017
18:22:01
а почему?
потому что:
- у них фича фриз, они хоть завтра могут выпустить доктрину 2.6 и на этом конец ветке 2x
- у них только один чувак сейчас активно ее поддерживает. и то последние 2 месяца у него небыло времени
- ближайшее время переписывается система метаданных доктрины, от слова полностью. И на этом завязано почти все, а потому пока это не будет сделано распаралелить разработку над третьей версией нельзя. Ну и как реультат - пока нечем помочь
принимают максимум пул реквесты с багфиксами и только если все покрыто тестами
потому многие фиксы которые мне например пипец были критичны все еще висят в открытых пул реквестах - тесты недописаны или написаны плохо
потому я юзаю свой форк доктрины)

Aleh
28.03.2017
18:25:05
воу)

Sergey
28.03.2017
18:25:58
можно помочь краудфандингом
например)
оплачивать разработку доктрины
я бы сотку кидал каждый месяц
лишь бы побыстрее пилили
p.s. интересный факт - из доктрины 3 выпилены embeddable) ну потому что во 2-ой версии они были сделаны кастылями а в третьей потом сделают нормально
а я сча балуюсь с кастомными гидраторами, и что можно сделать с ними
что бы можно было добавлять функционал без необходимости патчить саму доктрину
из маленьких и простых ништяков например

Sergey
28.03.2017
18:28:12
да на гидраторах можно много чего делать

Sergey
28.03.2017
18:28:34
сделал так что бы ArrayHydrator сохранял структуру объектов
в целом уже этого мне хватает что бы кое какие вещи сильно упростить
но пока оч плохо тещено
а вообще у меня была безумная идея (но это я только в Мае буду пробовать) - сделать сбоку от доктрины систему вьюшек
ну мол какие-то проекции сущностей
по сути своя реализация DQL
с кодогенерацией и все такое