@prophp7

Страница 1165 из 1387
Sergey
08.07.2018
13:56:19
зачем? если тянуть из базы не через * то да в 2х местах
ну мы ж не хотим что бы у нас приложение педалило

Sergey
08.07.2018
13:56:40
ок, тогда вопрос, зачем в БД придумали view?

Sergey
08.07.2018
13:56:57
Sergey
08.07.2018
13:57:33
view для того и нужен чтобы ограничивать видимость полей в том числе по определенным условиям

Google
Sergey
08.07.2018
13:57:54
да, но с пользователями в CRM это нам не поможет, так?

я согласен что вьюшки это хорошо, но в случае с one-to-many всеравно будут проблемы с гидрацией которую надо где-то делать

Sergey
08.07.2018
13:58:42
да но в любом случае в одном месте в любом случае поправить строчку не получится, придется в любом случае лезть в шаблоны еще

Sergey
08.07.2018
13:59:40
не важно, если он чуть сложнее чем json encode то придется

ок в случае одного заказа

но с теми же полями - тот же домен, метод getById

Sergey
08.07.2018
14:04:34
добавляем в зависимости домен заказов

я конечно слабо представляю зачем в одном запросе и менять статус и получать заказ, но раз так надо, то через домен заказов обновляем статус, через домен OrdersWithFullDetailsDomain получаем заказ

естественно все это внутри домена страницы

Google
Sergey
08.07.2018
14:11:35
я конечно слабо представляю зачем в одном запросе и менять статус и получать заказ, но раз так надо, то через домен заказов обновляем статус, через домен OrdersWithFullDetailsDomain получаем заказ
что бы второй раз за актуальным состоянием на сервер не ходить. Единственный вариант получше - отправлять сокетами отдельно. Тут к слову тоже вопрос - как бы ты это делал в условиях ADR

ну мол отправка через сокеты -> послать запрос на хрень которая с сокетами работает и в запрос запихнуть ту самую json-ку которую мы хотим что бы все пользователи получили

Sergey
08.07.2018
14:12:39
во первых я бы разбил на 2 запроса

Sergey
08.07.2018
14:12:59
во первых я бы разбил на 2 запроса
по условиям задачи - нельзя

Sergey
08.07.2018
14:13:01
во вторых я не вижу смысл тянуть весь заказ

Sergey
08.07.2018
14:13:10
не только статус. статус это последнее что нам надо отдавать ибо вероятность что он поменяется ничтожна

но меня сейчас вопрос с сокетами интересует

в этом случае у тебя в экшен данные не надо возвращать, но эти данные надо прокинуть (через респондер) на внешний сервис по http

Sergey
08.07.2018
14:15:06
с сокетами не работал не подскажу точно как оно должно быть

так стоп

если в экшн не надо, а нужно положить данные в другой API, то это не задача респондера

Sergey
08.07.2018
14:18:51
если в экшн не надо, а нужно положить данные в другой API, то это не задача респондера
да, потому и спрашиваю как бы ты делал. Тебе по сути нужно то же что и для показать список, но с другой стороны приложения по сути

Sergey
08.07.2018
14:20:53
так как там будет json encode по сути, то достаточно выплюнуть данные в домен работы с этим API

Sergey
08.07.2018
14:24:43
так как там будет json encode по сути, то достаточно выплюнуть данные в домен работы с этим API
не, там скорее всего будет какой-то symfony/serializer что бы хэндлить всякие даты и прочие деньги

Sergey
08.07.2018
14:25:34
в любом случае это уже забота того домена который работает с API

это его зона ответственности

Sergey
08.07.2018
14:27:53
короч ладно, мне наскучило. Потому последний вопросик: можно ли заменить термин "домен" на "приложение"? А "эктор" на адаптер (ведь все что он делает это конвертирует http запрос в вызов приложению). Тогда респондер будет просто изолированная штука которую использует адаптер что бы сконвертировать данные в нужное представление

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

Sergey
08.07.2018
14:30:43
что в принципе мешает чему либо в этой системе быть реюзаным в другом месте?

Google
Sergey
08.07.2018
14:31:23
что в принципе мешает чему либо в этой системе быть реюзаным в другом месте?
вопрос зоны ответственности. Я например на запись и на чтение стараюсь разные штуки использовать. Но в целом ничего.

Sergey
08.07.2018
14:31:54
респондер это то, что формирует ответ

Sergey
08.07.2018
14:32:15
респондер это то, что формирует ответ
но ответ формирует домен) респондер по твоей версии лишь преобразовывает представление данных

Sergey
08.07.2018
14:32:35
насчет экшна я бы скорее сказал что это что то вроде команды, но не адаптер

домен - формирует пакет данных для респондера

нет "домен" нельзя заменить "приложением"

Sergey
08.07.2018
14:34:00
домен - формирует пакет данных для респондера
в чем разница между формированием пакета данных и формированием респонса?

нет "домен" нельзя заменить "приложением"
почему? Пауль же сам предлагает точкой входа в домен делать сервисы уровня приложения

Sergey
08.07.2018
14:34:58
можно написать программу которая выполнится и на php и на c используя один файл исходников (языки могут быть иные, чисто для примера), но в одном случае это php в другом c, все зависит от контекста

Sergey
08.07.2018
14:35:02
насчет экшна я бы скорее сказал что это что то вроде команды, но не адаптер
дай определение паттерну "команда" и паттерну "адаптер". А потом скажи чем именно занимается экшен

Sergey
08.07.2018
14:35:27
как минимум у ответа есть код

Sergey
08.07.2018
14:35:46
как минимум у ответа есть код
у какого ответа? http который?

Sergey
08.07.2018
14:35:50
да

Sergey
08.07.2018
14:36:04
да, но это всеравно не формирование а трансформация

исключения - в 4xx или 5xx с каким-то телом, а если все хорошо - 2xx - то что задал контекст.

Sergey
08.07.2018
14:36:35
хоть горшком назови, только в печь не суй, смысл не поменяется

Sergey
08.07.2018
14:36:47
не я же адаптер командами называю

Sergey
08.07.2018
14:37:49
так не надо все яйца в одну корзину

Google
Sergey
08.07.2018
14:38:35
так не надо все яйца в одну корзину
https://github.com/pmjones/adr/blob/master/IMPLEMENTATION.md#action

Sergey
08.07.2018
14:38:39
ADR это про Web, если нужно CLI приложение на php можно заниматься только доменами из ADR, сам ADR не про это

Sergey
08.07.2018
14:39:05
ты можешь внутри экшена из http запроса сформировать команду и юзать тот самый command pattern

далее, респондер. Тот же твиг или symfony/serializer - это примеры штук которые полностью инкапсулируют в себе UI логику.

Sergey
08.07.2018
14:39:58
Action это action, это не адаптер

Sergey
08.07.2018
14:40:28
Action это action, это не адаптер
Action - название сущности в триаде Action-Domain-Responder. Выполняет роль адаптера между http и Domain. Так?

или он какую-то другую роль выполняет?

Sergey
08.07.2018
14:41:21
The key heuristic of the Action is it should contain almost no logic at all. It collects input from the HTTP request, passes that input to the Domain, then hands control over to the Responder. The Action is intentionally very spare. Handle any business logic in the Domain and any presentation logic in the Responder. The only exception here is the Action may provide default values for user inputs when they are not present in the HTTP request; this is easily handled via ternaries rather than if/then blocks.

Admin
ERROR: S client not available

Sergey
08.07.2018
14:42:31
twig это не responder

не надо путать шаблонизаторы с responder

Maksim
08.07.2018
14:43:45
шёл второй день...

Sergey
08.07.2018
14:44:11
главное не скучно

Елнур
08.07.2018
14:45:19
Action это action, это не адаптер
в суть гляните слов, да поймете может

Sergey
08.07.2018
14:47:08
не надо путать шаблонизаторы с responder
$responder = function ($data) use ($twig) { return new Response($twig->render('template.twig', $data)); };

чем не респондер)

Sergey
08.07.2018
14:48:23
тем, что не может быть use

Sergey
08.07.2018
14:49:26
тем, что не может быть use
это детали. Ты ж как-то респондер получаешь в своем экшене. предположим что тебе эта хрень как зависимость пришла

Sergey
08.07.2018
14:49:50
тем не менее action ничего про твиг знать не может

Google
Sergey
08.07.2018
14:50:28
кроме того это уж очень упрощенный responder

где обработка случаев когда в payload статус ошибки например?

Sergey
08.07.2018
14:54:04
где обработка случаев когда в payload статус ошибки например?
вот хороший вопрос - как ты будешь хэндлить исключения?

Sergey
08.07.2018
14:54:14
какие исключения?

Sergey
08.07.2018
14:54:22
или это задача домена сконвертить исключения в некий пэйлоад

Sergey
08.07.2018
14:54:30
именно

Sergey
08.07.2018
14:55:19
именно
у Пауля этим экшен занимается)

Sergey
08.07.2018
14:56:07
вообще - нет

Sergey
08.07.2018
14:56:09
не ну ладно, он на самом деле топит за то что бы всегда некий пэйлоад возвращался

ладно, пусть живет

я допускаю что ADR в условиях любителей пописать логику в контроллерах скорее хорошо нежели бесполезно

просто это капля в море

Sergey
08.07.2018
14:58:08
не могу не согласиться, ADR - это не панацея

Sergey
08.07.2018
15:00:59
есть скажем еще CQRS - оно позволяет тебе сделать чуть по другому, когда у тебя операция записи и чтения происходят через разные интерфейсы (разные зависимости). И этот подход очень плохо вяжется с ADR в ситуации когда хочется что-то вернуть после записи. Хотя в целом, возможно желание что-то вернуть после записи само по себе опасно. Вернул айдишку и норм. А для синхронизации - сегодня поднять сокеты можно на раз два.

Sergey
08.07.2018
15:02:53
в принципе я не вижу проблемы просто иметь зависимость на домен чтения и домен записи у некого общего домена, для таких случаев

если совсем грубо говоря - это вопросы относящиеся к организации доменов, а не к ADR и тут она вообще никак не мешает такому подходу

Sergey
08.07.2018
15:05:09
что до терминологии - мне уж оооочень не нравится слышать фразы "организация доменов" ибо... звучит это дико

потому я не люблю ADR

Sergey
08.07.2018
15:05:52
вот я тоже в эту сторону думаю последнее время

Sergey
08.07.2018
15:06:23
для меня домен - это доменная модель. Которая представлена сервисами, сущностями и VO и вообще сложная штука.

а для "что-то что что-то делает" и так был термин сервис

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