Size: a a a

2021 August 18

MM

Maxim Mesilov in symfony
источник

D

Dmitry in symfony
Спасибо. Изучу
источник

ПГ

Павел Г. in symfony
Доп. параметры можно прокидывать через конструктор.
источник

ПГ

Павел Г. in symfony
Т.е. то что у нас общее и уникальное в рамках сессии (например товар/заказ/корзина, и пользователь) - через метод, а то что можно достать и без текущей сессии (например инфу о других товарах пользователя) - через DI и в самой скидке (или фабрике которая ее формирует) рассчитать.
источник
2021 August 19

A

Alexandr in symfony
промокоды были разные, можно было накрутить кучу условий(сколько товара, какая сумма, группа товара, группа юзера...) + куча(конечная) результата (скидка на весь заказ, на группу, на товар, товар в подарок) поля условия и результа хранились json в БД, когда прокод доставлся из БД фабрика знала какой класс посторить и как интерпретировать json, какждый промо реализовывал интерфейс с методом isSpecifiedBy (спецификация) который принимал только корзину который возвращал новую корзину с новыми ценами + результат (сколько общая скидка, на какие товары скидка...)
источник

D

Dmitry in symfony
а корзина у вас соответственно держала список товаров, юзера и тд ? и каждый класс промокода сам доставал что ему надо для логики ? например весь список покупок юзера, или его дату рождения и бла бла бла
источник

ПГ

Павел Г. in symfony
А почему бы нет,я  про доставать промокодом необходимые данные
источник

A

Alexandr in symfony
да, корзина содержала юзера и промокод помоему, но не что не мешает научить фабрибку прокидывать через конструктор или сеттер юзера или любую другую зависимость
источник

ПГ

Павел Г. in symfony
+
источник

D

Dmitry in symfony
это не сарказм был, я просто уточняю, чтобы удостовериться правильно ли я понял идею
источник

ПГ

Павел Г. in symfony
Я за сарказм и не принял :)
источник

D

Dmitry in symfony
благодарю за идеи
источник

ПГ

Павел Г. in symfony
У меня модификаторы конечно слабенькие, но есть цена и на нее около 8 модификаторов возможных. Они сами решают что нужно откуда достатть через DI. А то что в текущей сессии уникально - уже через сеттер, таких параметров немного и они не могут бескончено и часто плодиться.
источник

D

Dmitry in symfony
анступим на нарушение срп если каждому отдельному промокоду прокидывать отдельные параметры
не очень бы хотелось
корзина тут больше подходит как образ некоего ДТО который можно передать всем (тут тоже есть нарушение срп, но скрытое :) )
источник

ПГ

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

ПГ

Павел Г. in symfony
Почему srp нарушается? Вид промокода отвечает только за свою логику.
источник

A

Alexandr in symfony
то  что есть ссылка на другой объект не нарушает srp, вроде как, корзнина не вызывает юзера
источник

D

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

D

Dmitry in symfony
но давайте не будем дисскутировать, солид принципы зависят от того как на них посмотреть
источник

D

Dmitry in symfony
и насколько мелко дробить системы и тп.
я все равно не вижу, пока что, способа кроме "корзины" и предложенного выше
источник