Size: a a a

2020 May 06

I<

Ivan <Chi> in Drupal RU
services.yml это часть реализации DI контейнера в Симфони, сервисы можно делать из без него
источник

I<

Ivan <Chi> in Drupal RU
К примеру в Pimple сервисы задаются через каллбаки
https://pimple.symfony.com/
источник

I<

Ivan <Chi> in Drupal RU
@miroslav_lee Сначала определись для чего нужен этот объект. Если он для выполнения операций то значит это сервис.
источник

I<

Ivan <Chi> in Drupal RU
Соответственно не понятно, зачем ему сеттеры.
источник

МЛ

Мирослав Ли... in Drupal RU
Ivan
@miroslav_lee Сначала определись для чего нужен этот объект. Если он для выполнения операций то значит это сервис.
нет, это обработчик должен быть.
Например делает запрос по заданым данными.
Вот я делаю это через сетеры, ну задавать параметры запроса.
И например есть метод, который вконце запускаешь, он на основе этих параметров делает запрос.
И вот я хотел сделать это сервисом, и вот тут до меня дошло, что наверное нельзя это делать сервисом)
источник

I<

Ivan <Chi> in Drupal RU
Мирослав Ли
нет, это обработчик должен быть.
Например делает запрос по заданым данными.
Вот я делаю это через сетеры, ну задавать параметры запроса.
И например есть метод, который вконце запускаешь, он на основе этих параметров делает запрос.
И вот я хотел сделать это сервисом, и вот тут до меня дошло, что наверное нельзя это делать сервисом)
По смыслу это сервис.
источник

МЛ

Мирослав Ли... in Drupal RU
Ivan
По смыслу это сервис.
но там каждый раз свои параметры будут.
И как мы выше обсудили, что сервис должен быть immutable.
А значит не подходит. Верно?
источник

МЛ

Мирослав Ли... in Drupal RU
Потому что DI создаст объект с параметрами заданными, а когда мне нужно будет обратиться снова, то там останутся старые данные. Пока я их сеттерами не перебью.
источник

I<

Ivan <Chi> in Drupal RU
Все данные передавай как параметр при запуске.
источник

I<

Ivan <Chi> in Drupal RU
$my_service->doSomething(...$parameters);
источник

АК

Алексей Кузнецов... in Drupal RU
Надо значит делать класс-фабрику и его делать сервисом
источник

МЛ

Мирослав Ли... in Drupal RU
Ivan
Все данные передавай как параметр при запуске.
так это не проблема, я могу всегда передавать, а завтра придет новый разраб и обратится к моему серверу и не передаст параметры в какой-то момент, у него ответ будет не верный, так как старые остались.
источник

МЛ

Мирослав Ли... in Drupal RU
Алексей Кузнецов
Надо значит делать класс-фабрику и его делать сервисом
да, вот наверное так только. Спасибо)
источник

I<

Ivan <Chi> in Drupal RU
Мирослав Ли
так это не проблема, я могу всегда передавать, а завтра придет новый разраб и обратится к моему серверу и не передаст параметры в какой-то момент, у него ответ будет не верный, так как старые остались.
А где старые данные могут остаться? Если ты их передаёшь через параметры, то они нигде не будут храниться.
источник

МЛ

Мирослав Ли... in Drupal RU
Ivan
А где старые данные могут остаться? Если ты их передаёшь через параметры, то они нигде не будут храниться.
это же сервис)
источник

МЛ

Мирослав Ли... in Drupal RU
Он во второй раз не создает новый объект, а тянет старый)
источник

I<

Ivan <Chi> in Drupal RU
> $my_service->doSomething(...$parameters);
источник

I<

Ivan <Chi> in Drupal RU
Данные не надо хранить в объекте сервиса.
источник

АК

Алексей Кузнецов... in Drupal RU
Или можно повторно вызывать сеттеры из метода doSomething
источник

МЛ

Мирослав Ли... in Drupal RU
об этом и речь, что тогда этот класс где есть сеттеры с параметрами не должен быть сервисом.
А должен быть другой сервис, который будет создавать объект этого класса.
Типо промежуточный сервис
источник