
Sergey
28.01.2018
10:54:40

Andrew
28.01.2018
10:55:06
@thatside да, идет SomeHandler и в нем нужные мне DI и метод handle() {..} котоырй делает что надо

Sergey
28.01.2018
10:55:08
Command -> use case и под него хэндлер. Лежит оно тоже не в UI/Infrastructure layer а в domain layer
короч херню вы творите

Google

Sergey
28.01.2018
10:55:56
не завидую тем кто будет это суппортить через годик

Bohdan
28.01.2018
10:56:11

Sergey
28.01.2018
10:56:24

Bohdan
28.01.2018
10:56:28
2. я так и не понял, ты сами классы команд тоже как сервисы создаешь?

Sergey
28.01.2018
10:56:30
это ж просто сервис уровня приложения

Andrew
28.01.2018
10:56:47
@fes0r так а что не так то? "не завидую тем кто будет это суппортить через годик"

Sergey
28.01.2018
10:57:21

Bohdan
28.01.2018
10:57:24
пример примитивный, суть - группировка действий

Sergey
28.01.2018
10:57:44

Andrew
28.01.2018
10:57:49
@fes0r
1 - вывожу всю логику из конторллера, слишком жирные будут
2 - проще тестировать
3 - проще ориентироваться

Sergey
28.01.2018
10:58:13

Google

Sergey
28.01.2018
10:58:43
3. достаточно сервисов менеджеров на первом этапе. Следующим этапом будет передислокация логики глубже - в сущности и VO
вот тогда да, проще и ориентироваться и тестить

Andrew
28.01.2018
10:59:23
у меня не было хороших примеров с VO
сейчас на работе проект, там такое г
из - за value object

Sergey
28.01.2018
10:59:51

Bohdan
28.01.2018
11:00:22
да ни в чем, по сути)

Sergey
28.01.2018
11:00:25

Andrew
28.01.2018
11:00:37
гавно что ли?)
там все через месяц упало
я теперь перписую

Sergey
28.01.2018
11:01:03
гавно что ли?)
ну если ты просто взял пачку if-ов и завернул это из контроллера в сервис - ты как бы ничего не поменял

Bohdan
28.01.2018
11:01:15
лично я не знаю, как строил бы свое следующее приложение
на моем проекте шина была изначально и я просто перевёл его на другую - меньше мороки, но есть определённый профит

Andrew
28.01.2018
11:01:45
@thatside какой?

Sergey
28.01.2018
11:01:54
ну и еще - когда в хэнделе у нас не просто оркестрация а логика есть - то мы в жопе окажемся ровно так же как если бы все было в контроллере
ну то есть у меня есть весьма простое правило относительно хэндлеров - в них не должно быть if-ов
а если они и есть - то для них нужен минимум зависимостей

Bohdan
28.01.2018
11:04:17

Sergey
28.01.2018
11:04:24

Google

Bohdan
28.01.2018
11:05:02

Andrew
28.01.2018
11:05:09
@thatside
"оки, но есть определённый профит"

Sergey
28.01.2018
11:05:38
но если у тебя шина может возвращать значения - рано или поздно кто-то read операцию туда запихнет.... Да и чаще можно встретить хэндлеры как транзакционные скрипты нежели сервисы для оркестрации юзкейсом

Bohdan
28.01.2018
11:07:02
@thatside
"оки, но есть определённый профит"
раньше был litecqrs
во - первых, в нем много лишнего и не на завёлся сходу на sf3
во - вторых - не было точки для прикрутить отправку сообщений в rabbitmq
в-третьих - на нем было сложнее построить саги, но это уже лично моя наркомания

Sergey
28.01.2018
11:07:04
я все больше думаю на тему того что вмеру жирные контроллеры это не так уж и плохо... если там нет логики, и все тупо последовательность действий, если там тупо сделать запрос в базу и выплюнуть... и это юзается только там. то незачем вводить дополнительную абстракцию.
но это больше к read операциям относится

Bohdan
28.01.2018
11:07:53
разве что для единообразности
но это на вкус и цвет, да

Sergey
28.01.2018
11:08:27

Bohdan
28.01.2018
11:08:58
полностью согласен

Sergey
28.01.2018
11:09:03
ну мол у тебя вполне может быть система которая требует где-то что-то посложнее, типа полноценный CQRS, а в 2/3 других частей приложения можно и в одном файле написать
@Enleur может татализатор замутить? типа я ставлю что бета 3-ей доктрины будет в 19-ом году. Они решились таки DQL на hoa перевести...

Sergey
28.01.2018
11:13:33
а дай линк на ишью

Sergey
28.01.2018
11:13:37
аж интересно стало

Andrew
28.01.2018
11:15:18
слишком много unkown words

Sergey
28.01.2018
11:17:27
ну типа это простой способ удалить гиганский Parse класс + дать возможность кастомайзить синтаксис DQL без боли и необходимости патчить саму доктрину
ну мол ты можешь просто модифицировать грамматику
я ж даже загорелся - пилю сча грамматику для hoa
давно хотел с ней разобраться

Andrew
28.01.2018
11:19:54
)

Google

Andrew
28.01.2018
11:20:01
Так ведь DQL медленный

Sergey
28.01.2018
11:20:43
в доктрине скомпиленные DQL-ки кэшируются
потому если ты не врубил на проде query cache - иди и вруби

Sergey
28.01.2018
11:21:37
https://github.com/doctrine/doctrine2/issues/6211#issuecomment-291271881
но эт еще хз когда обсуждали вроде как

Sergey
28.01.2018
11:24:33
блин надо как-то в их слак попасть)

Andrew
28.01.2018
11:24:52
)

Sergey
28.01.2018
11:24:58
а то они там решают придумывают прикольные штуки и у них нет времени роадмэп оформить, а мне интересно

Andrew
28.01.2018
11:25:40
взломать?)

Admin
ERROR: S client not available

Sergey
28.01.2018
11:27:26
да можно просто при случае спросить - мне просто любопытно но лень
я лучше попробую запилить DQL парсер новый
за 4 часа оно уже разбирает простые SELECT-ы
ну и описал грамматику (без CASE оператора - он мутный)
только баги есть еще

Sergey
28.01.2018
11:30:19
а дай примерчик

Andrew
28.01.2018
11:31:49
@fes0r примерчик?)

Sergey
28.01.2018
11:31:56
#SelectClause:
::SELECT:: <DISTINCT>? SelectExpression() (<COMMA> SelectExpression())*

Google

Sergey
28.01.2018
11:32:33
пока это тупо копипаста с доки
например вместо этого можно сделать 2 более явных правила
#SelectClause:
::SELECT:: SelectExpression()
#SelectDistinctClause
::SELECT:: ::DISTINCT:: SelectExpression()
что упростит проход по дереву
там много кастылей в текущей имплементации AST что бы не свихнуться
типа SimpleSelectCause
возможность формально описать грамматику для парсера сильно упростит его поддержку
ну то есть там еще дофига переделывать...

Andrew
28.01.2018
11:36:18
В принципе, как всегда)

Sergey
28.01.2018
11:36:34
к слову неплохая идея для небольшой статейки - аля DSL на PHP
надо толко придумать юзкейсы нормальные... типа описание правил скидок
Discount for product within category "Foo" to be 10%
Discount for product in green color to be 15%

Ladone
28.01.2018
12:24:41
Привет. Ребят ткните носом, как можно сделать регистрацию по ajax с помощью fosuserbundle?
Проблема в том что нужны штучки FOSUserBundl'а по типу подтверждения аккаунта через e-mail

Andrew
28.01.2018
12:39:42

Ladone
28.01.2018
12:40:23
в том что мне нужно получать ошибки от сервера и их рендерить
а FOSUserBundle возвращает страницу

Sergey
28.01.2018
12:41:58
ты всегда можешь переопределить форму/шаблон

$iD
28.01.2018
12:43:12
и контроллер и экшн и вообще выкинуть фос
:)

Ladone
28.01.2018
12:46:15
зачем мне переопределять шаблон если мне нужны просто JSON данные?
Статус и всё.

Andrew
28.01.2018
12:48:25
А ещё всегда можно сделать свой экшн регистрации и диспатчить ивенты фоса ручками а также вызывать все юзер менеджеры ручками

Vladislav
28.01.2018
12:49:37
Не бери фос, если собираешься использовать только половину