Size: a a a

2021 September 04

SP

Sergey Protko in symfony
а для чтения зачем?
источник

SP

Sergey Protko in symfony
репозиторий - коллекция, ты не можешь доставать из коллекции то что ты туда не клал)
источник

И

Игорь in symfony
Там запросы инкапсулируешь 🤔
источник

SP

Sergey Protko in symfony
нарушая при этом SRP, Open/Close и Interface Segregation
источник

И

Игорь in symfony
А чем нарушая srp, и зачем тебе o/c на репозитории 🤔
источник

SP

Sergey Protko in symfony
o/c где-то не нужен?
источник

SP

Sergey Protko in symfony
если тебе приходилось хоть раз в репозитории сущности A делать джойны на таблички сущности B - уже нарушаешь srp
источник

И

Игорь in symfony
Как ты видишь наделение репозитория доп поведением по средствам стороннего кода 🤔 и главное зачем 🤔
источник

SP

Sergey Protko in symfony
новые методы - новое поведение. приходится постоянно менять один и тот же модуль.
источник

И

Игорь in symfony
Ну да, следуя о/с тебе надо писать репы так что бы ты их в декораторы заворачивал. По-моему это изврат🤔
источник

SP

Sergey Protko in symfony
ну то есть на open/close можно смотреть с двух сторон - можно пытаться организовать точки расширения (всякие query/specification передавать) а можно смотреть с позиции "надо новую выборку - сделай отдельный сервис"
источник

SP

Sergey Protko in symfony
нет, декораторы это один из способо делать точки расширения (кэширование например для отдельной выборки). Это не изврат просто это не единственный способ "расширять" поведение
источник

И

Игорь in symfony
Я понял о чём ты
источник

SP

Sergey Protko in symfony
мне нравится подход при котором репозиторий это 2 метода - add и get. иногда может быть exists/remove
источник

SP

Sergey Protko in symfony
а все остальное - отдельный сервисы ибо там тебе всеравно не совсем сущности нужны а "для ui чего"
источник

SP

Sergey Protko in symfony
тогда не возникает проблемы "где-то и просто SQL заюзать и более специализированные DTO и ит.д. и т.п."
источник

SP

Sergey Protko in symfony
а то с "все выборки в репозитории" потом оч быстро начинаются кейсы "вот у тебя в репозитории юзеров выборка по продуктам - это нормально вообще?"
источник

SP

Sergey Protko in symfony
логический кохижен это удобно но оч быстро можно превратить все в говно и потом оч долго не замечать проблемы
источник

И

Игорь in symfony
Мы ушли от темы )
Ещё раз пытаюсь обозначить проблему, как я пришел к билдерам
Private function create ($args){
       If($args){
         $entity = new a();
       }Else {
          $entity = new b();
       }
       $em->persist($entity);
}
источник

И

Игорь in symfony
На if  нужны тесты )
источник