@prophp7

Страница 1162 из 1387
Sergey
07.07.2018
08:30:49
в принципе идея с action вместо жирного контроллера если я правильно понимаю мысль в том, чтобы у действия была одна зона ответственности
у действия и так одна зона ответственности, вопрос в том у тебя действие это invokable класс или просто метод класса

тогда из еще можно сгруппировать по пересечению зон ответственности вместе

на маленьких проектах как бы плевать, а если у тебя хотя бы пара сотен экшенов уже не так удобно

Google
Sergey
07.07.2018
08:35:08
invokable класс естественно

Sergey
07.07.2018
08:35:22
короч я так подумал - лучше зайти к этому вопросу с другой стороны. Как у тебя выглядит Domain в терминах ADR?

Sergey
07.07.2018
08:36:02
если совсем в общем - его зона ответственности - подготовка данных, которые будут выведены

если более частно - кошмарно, думаю надо еще почитать посмотреть про сервисы, вполне возможно чего то подобного мне не хватает в доменах

Sergey
07.07.2018
08:37:35
но пока не уверен

возможно опять проблема с терминологией

если у тебя есть возможность псевдокодом описать код экшена какого-то, например - регистрация юзера. было бы клево

типа name, email, password

Sergey
07.07.2018
08:43:23
хм...

должно выглядеть примерно как domain->addUser(request);

так стоп не совсем

Google
Sergey
07.07.2018
08:45:35
return responder->__invoke(domain->addUser(request));

Sergey
07.07.2018
08:57:32
return responder->__invoke(domain->addUser(request));
то есть http request просачивается в domain?

Sergey
07.07.2018
09:04:46
в данный момент да

Sergey
07.07.2018
09:05:02
ну значит ты не разобрался с ADR

Sergey
07.07.2018
09:05:46
да я понимаю, что не должен

но сейчас выглядит так

Sergey
07.07.2018
09:06:22
да я понимаю, что не должен
ну то есть вообще никакого разделения ответственности ты тут не имеешь. Это то же самое что json_encode($domain->addUser($request);

если совсем в общем - его зона ответственности - подготовка данных, которые будут выведены
ну и как мы выяснили - задача "домена" не только в подготовке данных для UI но и в записи. То есть уже 2 ответственности на одном компоненте. А потому вопрос - а нахер тогда респондер и в чем его зона ответственности?

Sergey
07.07.2018
09:07:44
по логике должно быть примерно так return responder->invoke(domain->addUser(name, email, password));

вот насчет 2х ответственностей я подохреваю что тут проблема

а responder обрабатывает пришедшие данные и подготоваливает response

заголовки, тело страницы и т.д.

Sergey
07.07.2018
09:10:17
могу ли я скормить айдишку респондеру что бы тот сгенерил респонс и он сам знал что откуда доставать?

это ж по сути тоже преобразование

Sergey
07.07.2018
09:10:37
нет

Sergey
07.07.2018
09:10:43
то есть. если мне нужен json - мне выходит что не нужны респондеры?

я ж могу тупо сделать return $this->json($domain->addUser(...$request));

Sergey
07.07.2018
09:11:02
респондеры имеют следующий заголовок __invoke(payload)

Sergey
07.07.2018
09:11:54
респондеры имеют следующий заголовок __invoke(payload)
предположим что у нас страничка, где надо отображать всякий профиль пользователя сверху, какие-то блоки с полезной инфой и т.д. Домен должен на каждый запрос все эти данные доставать или респондер может сам куда-то сходить?

Google
Sergey
07.07.2018
09:12:25
это зона ответственности домена

Sergey
07.07.2018
09:13:13
это зона ответственности домена
в каждом запросе нам помимо кусочка данных надо будет тянуть данные для всей страницы?

в каждом, Карл

то есть связанность системы взлетает до небес

Sergey
07.07.2018
09:13:30
зачем?

Sergey
07.07.2018
09:13:43
ну потому что надо что бы домен предоставил всю инфу которая будет на страничке, с твоих слов

Sergey
07.07.2018
09:13:57
именно

но ты же не всегда всю страницу тянешь?

Sergey
07.07.2018
09:14:05
но ты же не всегда всю страницу тянешь?
предположим что у меня нет фэнси ajax-ов и т.д. и мы говорим о классическом WEB (ибо там где фэнси SPA мне не нужен респондер ибо у меня это будет просто json_encode по твоей логкие)

Sergey
07.07.2018
09:15:54
для веба да, но для классического веба по другому никак

если конечно не пользвоаться iframe

Sergey
07.07.2018
09:17:16
кроме того иногда не json encode а все же отрендереный кусок страницы

Sergey
07.07.2018
09:17:23
ох сколько нам открытий чудных....

Sergey
07.07.2018
09:17:51
ну не отправлять же сразу все шаблоны клиенту?

Sergey
07.07.2018
09:18:03
> по другому никак Что ты знаешь о HMVC? компонентные подходы? UI как композиция элементов? каждый со своим провайдером данных и т.д.?

Sergey
07.07.2018
09:18:53
иерархическая система MVC, триады каждая со своей зоной ответственности

Sergey
07.07.2018
09:19:29
короч моя основная притензия к твоей интерпритации ADR что она не только бесполезная но вредная, ибо никакого разделения ответственности у тебя по итогу нет.

вообще никакого

Google
Sergey
07.07.2018
09:19:49
даже pmjones не такую вредную хрень предлагает

Sergey
07.07.2018
09:19:56
с чего бы?

Sergey
07.07.2018
09:20:10
ну потому что то что ты описал отличается от того что он пишет в описании ADR

и закончим тем какой объем связанности порадит такая херня

Sergey
07.07.2018
09:21:02
никакой

Sergey
07.07.2018
09:21:15
никакой
удачи

мой тебе совет - забудь о MVC, ADR и т.д.

и лучше разберись с тем что такое связанность и с идеей "Dependency as code smell"

композиция и агрегация там, ну и все такое. Какие есть трюки что бы уменьшать количество зависимостей

Sergey
07.07.2018
09:22:27
я знаю что такое связанность

Admin
ERROR: S client not available

Sergey
07.07.2018
09:22:32
ну что-то не похоже

Artem
07.07.2018
10:24:39
пилю тестовое задание и думаю "А нафига мне маппить данные полученные из запросов в объекты, если мне их только юзеру передать?". Типа может просто массив зафигачить и бог с ним? Всё равно никакого поведения у объектов не будет.

Bohdan
07.07.2018
10:27:50
ну DTO - это массивчик на стероидах

мне сейчас для них только readonly пропертей не хватает... можно было бы поиграться с __get, но не хочется терять автокомплит

Sergey
07.07.2018
10:28:41
по сути зачем придумали DTO - потому что часто одна и та же структура нужна в двух местах, и в языках где для выражения структур данных у тебя есть только классы, как-то так пошло что все пладят эти классы.

если бы в php приложении структура данных выплевывалась клиенту строго в одном месте - то и обычный массивчик неплохо подойдет для решения проблемы

поскольку у нас конструирование и описание структуры будет строго в одном месте

Boris
07.07.2018
10:30:16
ну в массиве при получении его ты ж не знаешь наверняка какие там есть элементы и тд

чтобы не делать !empty()

Google
Boris
07.07.2018
10:30:30
на 10 мест

Sergey
07.07.2018
10:30:50
и тебе не надо знать структуру этого DTO кроме как в месте, где ты его конструируешь

Boris
07.07.2018
10:31:07
по сути ДТО это валидация при создании , в массиве при получении

Sergey
07.07.2018
10:31:23
это не помогает

Boris
07.07.2018
10:31:26
просто и то и то надо юзать с умом, а то как говорится дай дураку стеклянный .. он и его разобьет))

ты смешиваешь концепции
я про момент передачиданных на вход сервиса

Artem
07.07.2018
10:31:56
ну DTO - это массивчик на стероидах
просто получается, что репозиторий (а логично ли его называть репозиторием, если он возвращает только view-model?) возвращает то же самое, что application service, который его вызывает =\

Sergey
07.07.2018
10:31:56
просто и то и то надо юзать с умом, а то как говорится дай дураку стеклянный .. он и его разобьет))
опять же такого рода заявления так же никак не помогают людям понять когда юзать одно и когда другое и вообще зачем они это все юзают

Boris
07.07.2018
10:32:10
в самом сервисе или делаем валидацию или перекладываем ее на дто конструктор

Sergey
07.07.2018
10:32:32
я про момент передачиданных на вход сервиса
если dto передается на вход, тебе важно знать структуру поскольку ты уже потребляешь оную не только там где конструируешь dto. в PHP у тебя опция одна - классы

а если на выход - есть возможность сделать так что структура нам снаружи и не особо интересна (хотя на самом деле интересна, но это можно статическими анализаторами вытащить)

Boris
07.07.2018
10:33:14
да, но если условно на вход был массив , где обязательные 3 элекмента, то как вариант можно передать их отдельными параметрами, а не внутри массива

Artem
07.07.2018
10:33:39
я просто вообще не понял твою задачу ты получаешь данные и срзу их отдаешь?
ну элементарно запрос в РБД, который мне надо показать юзверю

Bohdan
07.07.2018
10:34:26
ну здесь вопрос в том, уверен ли ты в том, что получишь то, что тебе нужно

Sergey
07.07.2018
10:34:34
потому я и говорю что в условиях php у тебя есть только классы. А была бы возможность описать схему массивчика, его тип, то ты бы не делал классы для DTO)

Artem
07.07.2018
10:35:17
ну здесь вопрос в том, уверен ли ты в том, что получишь то, что тебе нужно
в смысле будут ли 100% в результатах запроса какие-то поля?

Bohdan
07.07.2018
10:35:22
да

и хочешь ли ты отдать проверку этого клиенту

Страница 1162 из 1387