Size: a a a

2020 September 24

VS

Vlad Sobenko in symfony
Dmitriy Tkachenko
аналогии из реального мира подьехали. Сервис ИРЛ берет что-то и что-то с этим делает (обслуживает, улучает etc.), а есть те, кто из сырья производит что-то, что потом будет обсуживаться сервисными компаниями. Так же и тут
Сервис всегда можно заменить нормальным обьектом.
источник

DT

Dmitriy Tkachenko in symfony
они и не обязаны быть 100% верными, иначе это были бы не аналогии, а объяснение самой концепции
источник

SB

Sergei Baikin in symfony
knopkod4v
не обязательно, наверное. Но вопрос-то остаётся - как определить когда надо инжектить, а когда нет?
Так для начало я бы определил а в чем для вас разница между инжектированием или не инжектированием и в чем цель
От этого бы танцевал
Вы же не делаете что то то потомучто просто так?
источник

DT

Dmitriy Tkachenko in symfony
Инжектить надо тогда, когда у сервиса много пользователей (больше одного)
источник

DT

Dmitriy Tkachenko in symfony
отсюда следует что сервису лучше быть стейтлесс
источник

VM

Volodymyr Melko in symfony
Dmitry
тогда придется делать dd->isBot($request->userAgent()->__toString()) || dd->isMobile($request->getUserAgent()->__toString)

а если еще и кеширование необходимо, тогда каждому методу это нужно передавать, по сути получаем статические методы
если нужно кешировать, то кеш - это зависимость детектора и идет ему в конструктор. Итого у тебя один инстанс сервиса, с методами
isBot($agent) \ isMobile($agent)

или с одним методом detect($agent): DetectionResult
DetectionResult::isBot() \ DetectionResult::isMobile();
источник

k

knopkod4v in symfony
Sergei Baikin
Так для начало я бы определил а в чем для вас разница между инжектированием или не инжектированием и в чем цель
От этого бы танцевал
Вы же не делаете что то то потомучто просто так?
ваще-то делаю, иначе я б работать не смог :D
пришлось бы больно дофига думать
источник

SB

Sergei Baikin in symfony
Dmitriy Tkachenko
Инжектить надо тогда, когда у сервиса много пользователей (больше одного)
У dateTime их много
Но я нехочу его инжектить
источник

DT

Dmitriy Tkachenko in symfony
Sergei Baikin
У dateTime их много
Но я нехочу его инжектить
потому что это не сервис) это значение с обрамлением
источник

SB

Sergei Baikin in symfony
Dmitriy Tkachenko
потому что это не сервис) это значение с обрамлением
дайьте определение сервису пожалуйчта
источник

D

Dmitry in symfony
Volodymyr Melko
если нужно кешировать, то кеш - это зависимость детектора и идет ему в конструктор. Итого у тебя один инстанс сервиса, с методами
isBot($agent) \ isMobile($agent)

или с одним методом detect($agent): DetectionResult
DetectionResult::isBot() \ DetectionResult::isMobile();
все зависит от применения библиотеки, если у вас либа предназначается для запуска на один юзерагент - то проще делать isBot() а если в цикле на детект разных то isBot($userAgent)
источник

VS

Vlad Sobenko in symfony
Sergei Baikin
Так для начало я бы определил а в чем для вас разница между инжектированием или не инжектированием и в чем цель
От этого бы танцевал
Вы же не делаете что то то потомучто просто так?
Потому, что так сделать легче. И вообще все фрейворки намекают сделать всё сервисами, чтобы юзать DI.
источник

DT

Dmitriy Tkachenko in symfony
севрис
источник

DT

Dmitriy Tkachenko in symfony
от анг Service
источник

SB

Sergei Baikin in symfony
Vlad Sobenko
Потому, что так сделать легче. И вообще все фрейворки намекают сделать всё сервисами, чтобы юзать DI.
а без DI сервисов не бывает?
источник

VM

Volodymyr Melko in symfony
Dmitry
все зависит от применения библиотеки, если у вас либа предназначается для запуска на один юзерагент - то проще делать isBot() а если в цикле на детект разных то isBot($userAgent)
прикол в том, что  isBot($agent) можно юзать и с одним агентом и в цикле без особой разницы
источник

k

knopkod4v in symfony
Sergei Baikin
Так для начало я бы определил а в чем для вас разница между инжектированием или не инжектированием и в чем цель
От этого бы танцевал
Вы же не делаете что то то потомучто просто так?
получается что и то и это - зависимости. Разница в том, что в одном случае есть зависимость от конструктора, а в другом нет 🤔
источник

D

Dmitry in symfony
Volodymyr Melko
прикол в том, что  isBot($agent) можно юзать и с одним агентом и в цикле без особой разницы
ага, только каждый раз нужно пробрасывать ему юзер агента отдельно, а если юзать это дело где-то внутри глубоко, то туда придется дополнительно пробрасывать юзерагента, а не просто либу
источник

VS

Vlad Sobenko in symfony
Sergei Baikin
а без DI сервисов не бывает?
Бывает офк. Они и есть. Но чтобы юзать DI нормальн, нужно чтобы стейта не было.
источник

SB

Sergei Baikin in symfony
knopkod4v
получается что и то и это - зависимости. Разница в том, что в одном случае есть зависимость от конструктора, а в другом нет 🤔
так а почему нам в одном случае важно чтобы зависимость светилась в конструкторе а в другом нормально когда она внутри  вылезает?
источник