Size: a a a

2020 September 21

S

SarcasmIO in symfony
Шурик
Народ, а можно как-то сделать так, чтоб за инжект контейнера в конструктор сразу било током?
уберай паблики и $this->c->get() не будет работать
источник

A

Arky in symfony
SarcasmIO
уберай паблики и $this->c->get() не будет работать
мне приходится добавлять паблики(
источник

Ш

Шурик in symfony
SarcasmIO
уберай паблики и $this->c->get() не будет работать
но током бить всё равно не будет(
источник

S

SarcasmIO in symfony
Arky
мне приходится добавлять паблики(
зачем?
источник

D

Dmitry in symfony
А вот ещё вариант. Линтер прикрутить
источник

JB

Jurij Bachkov in symfony
Arky
у меня в месадж хендлере есть, чтобы динамически вытащить нужный класс, который лежит в месадже)0
Класс? Может сервис? Добавь нужные сервисы через тэг
источник

A

Arky in symfony
SarcasmIO
зачем?
потому что по дефолту все сервисы приватные(
источник

D

Dmitry in symfony
Правило для phpcs
источник

S

SarcasmIO in symfony
Arky
потому что по дефолту все сервисы приватные(
ну и что с этим не так?
источник

D

Dmitry in symfony
И ещё как вариант. Навесить на интерфейс контейнера заглушку в сервисах. Хотя это может что-то сломать.
источник

A

Arky in symfony
SarcasmIO
ну и что с этим не так?
https://pastebin.com/ZRbPmACX бейте меня
источник

S

SarcasmIO in symfony
что тебе мешало получить EmailRenderInterface в конструктор класса / аргументом в метод ?
источник

А

Антон in symfony
SarcasmIO
что тебе мешало получить EmailRenderInterface в конструктор класса / аргументом в метод ?
Там так не получится, он получает конкретную реализацию в зависимости от типа почты. Тут фабрика нужна.
источник

JB

Jurij Bachkov in symfony
Я особо не понял в чем проблема, но энжектить контейнер в сервис - это сразу херачить по рукам, и очень больно
источник

A

Arky in symfony
SarcasmIO
что тебе мешало получить EmailRenderInterface в конструктор класса / аргументом в метод ?
фулл код https://pastebin.com/bHPmitVU это меседж хендлер
источник

D

Dmitry in symfony
Интересный подход. Искать в контейнере фабрику для определённого типа. Мне казалось фабрика сама должна определять тип через аргумент
источник

S

SarcasmIO in symfony
Антон
Там так не получится, он получает конкретную реализацию в зависимости от типа почты. Тут фабрика нужна.
получал бы !tagged всех реализаций и вместо ->locator->get()
опрашивал все реализации по ->getEmailType()
источник

А

Антон in symfony
SarcasmIO
получал бы !tagged всех реализаций и вместо ->locator->get()
опрашивал все реализации по ->getEmailType()
Да, так тоже можно. Или через фабрику, без разницы. Некоторые не любят теги из-за того, что надо создать много объектов вместо одного. Можно юзать прокси.
источник

D

Dmitry in symfony
SarcasmIO
получал бы !tagged всех реализаций и вместо ->locator->get()
опрашивал все реализации по ->getEmailType()
Или просто emailfabric->createbytype
источник

S

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