@symfony_php

Страница 604 из 1418
Sergey
28.01.2018
10:54:40
@fes0r но ведь у нас есть еще: 1 консольные команды 2 - доктрин команды 3 - maker bundle commands 4 - twig commands уверене еще омжно найти, если поискать
так это разные команды, если у тебя команда которая с кодом работает не понимает разницы - у тебя другие проблемы

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
@thatside да, идет SomeHandler и в нем нужные мне DI и метод handle() {..} котоырй делает что надо
1. можно держать в одном хендлере много методов handle (с разными именами)

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
@fes0r так а что не так то? "не завидую тем кто будет это суппортить через годик"
скажи, какую проблемы ты решаешь вводя command bus в проект?

Bohdan
28.01.2018
10:57:24
а тогда зачем нам шина?)
ну типа InvoiceHandler ->payInvoice(PayInvoice $command) || sendInvoice(SendInvoice $command)

пример примитивный, суть - группировка действий

Sergey
28.01.2018
10:57:44
ну типа InvoiceHandler ->payInvoice(PayInvoice $command) || sendInvoice(SendInvoice $command)
я понимаю, другое название этому - сервисы менеджеры

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

3 - проще ориентироваться

Sergey
28.01.2018
10:58:13
@fes0r 1 - вывожу всю логику из конторллера, слишком жирные будут 2 - проще тестировать
1. ты выносишь логику с кучей зависимостей из контроллера в хэнделр с кучей зависимостей. 2. иллюзия

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
пример примитивный, суть - группировка действий
ну мол объясни в чем разница: $bus->execute(new RegisterUserCommand(...$data)); $userManager->register(...$data);

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
лично я не знаю, как строил бы свое следующее приложение на моем проекте шина была изначально и я просто перевёл его на другую - меньше мороки, но есть определённый профит
шина вводит неплохое ограничение - CQS, типа write часть ничего не возвращает. Но как бы это можно делать и без шины, просто так выходит более явно хотя смысл тот же. Ну мол это больше вопрос культуры в команде

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

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

а если они и есть - то для них нужен минимум зависимостей

Bohdan
28.01.2018
11:04:17
Sergey
28.01.2018
11:04:24
лично я не знаю, как строил бы свое следующее приложение на моем проекте шина была изначально и я просто перевёл его на другую - меньше мороки, но есть определённый профит
а ну и еще один плюс от шины - декорация. Можно валидацию выносить, если у тебя она не на уровне http запроса реализована. Или flush какой-нибудь, если ты не замарочился с аннотациями вида @transactional

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
а дай линк на ишью
https://github.com/doctrine/doctrine2/issues/7017

ну типа это простой способ удалить гиганский 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 медленный
php парсер тоже медленный (относительно), потому ты скорее всего юзаешь opcache

в доктрине скомпиленные 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

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
зачем мне переопределять шаблон если мне нужны просто JSON данные? Статус и всё.
Ты всегда можешь экстендить контроллер фоса и отдавать json. Как экстендить, написано в доке фоса

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

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

Страница 604 из 1418