Size: a a a

2020 November 04

ПГ

Павел Г. in symfony
Konstantin dmz9
а можно бизнес логика не будет знать о существовании репозитория? спасибо
Можно, если ей передавать готовые данные
источник

A

Aleksandr Khristenko in symfony
Павел Г.
мы к репо обычно лезем из бизнеса, а тут из контроллера.
Если тебе нужно в действии контроллера вытащить данные и прокинуть их в твин ты для этого тоже отдельную сущность будешь делать или в контроллере сделаешь?
источник

Kd

Konstantin dmz9 in symfony
Павел Г.
Можно, если ей передавать готовые данные
ну так мы это и делаем не?
Controller:method ( $id, Business $business, Repository $repo )
$business->doSomething($repo->find($id));
$business->finishWork();
return $business->result();
источник

ПГ

Павел Г. in symfony
Aleksandr Khristenko
Если тебе нужно в действии контроллера вытащить данные и прокинуть их в твин ты для этого тоже отдельную сущность будешь делать или в контроллере сделаешь?
Ну тут мысль верная, в чтении можно сразу в базу. Но там мы тащим не сущность, а какой нить массив/дто.
источник

A

Aleksandr Khristenko in symfony
Павел Г.
Ну тут мысль верная, в чтении можно сразу в базу. Но там мы тащим не сущность, а какой нить массив/дто.
Не вижу принципиальной разницы.
источник

ПГ

Павел Г. in symfony
Konstantin dmz9
ну так мы это и делаем не?
Controller:method ( $id, Business $business, Repository $repo )
$business->doSomething($repo->find($id));
$business->finishWork();
return $business->result();
Я не совсем вас понимаю.  Тут вы тащите репо в бизнес.
источник

Kd

Konstantin dmz9 in symfony
Павел Г.
Я не совсем вас понимаю.  Тут вы тащите репо в бизнес.
нет, тут я тащу Entity внутрь doSomething
источник

ПГ

Павел Г. in symfony
А ну да, не совсем понял код)
источник

A

Aleksandr Khristenko in symfony
Павел Г.
Ну тут мысль верная, в чтении можно сразу в базу. Но там мы тащим не сущность, а какой нить массив/дто.
А если перед тем как отобразить нам надо проверить что можно отобразить?
источник

ПГ

Павел Г. in symfony
Aleksandr Khristenko
А если перед тем как отобразить нам надо проверить что можно отобразить?
Можно сделать queryHandler
источник

ПГ

Павел Г. in symfony
Ну вот в жтом и вопрос...
источник

ПГ

Павел Г. in symfony
где это делать
источник

A

Aleksandr Khristenko in symfony
Павел Г.
Можно сделать queryHandler
Зачем? Я думал все это разделение ради принципа единой ответственности и повторного использования. И использования репозиторию в контроллере мне кажется не противоречит.
источник

VM

Volodymyr Melko in symfony
Шурик
Ну чот кажется, что таскать с собой все события, которые уже совершились и которые ей уже не нужны - не входит в обязанности сущности
источник

A

AlexS in symfony
Ну вот у нас как-то так и сделано
источник

A

AlexS in symfony
Но хочу уйти от трейтов и хранения событий внутри сущности
источник

VM

Volodymyr Melko in symfony
Konstantin dmz9
т.е. код уезжает из очевидного места в неочевидное, и Business становится контроллером
контроллер это часть UI слоя
это способ взаимодействовать с твоей бизнес логикой через веб

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

VM

Volodymyr Melko in symfony
AlexS
Но хочу уйти от трейтов и хранения событий внутри сущности
но это же события сущности, где еще им хранится до фиксации результатов работы?
источник

A

AlexS in symfony
Volodymyr Melko
но это же события сущности, где еще им хранится до фиксации результатов работы?
Хз где, но после того, как они произошли - они сущности уже не нужны. И триггерятся не самой сущностью, а инфраструктурой
источник

A

AlexS in symfony
Даже в твоём примере они в private массиве трейта лежат и сама сущность не имеет к ним доступа и может только отдать все
источник