2020-05-21T07:47:08ZFluxBBhttps://laravel.ru/forum/viewtopic.php?id=4628Добрый день! Есть несколько методов send() для отправки email каждый из которых реализует функционал отдельного шлюза отправки. После рефракторинга решил, что правильнее было бы для каждого шлюза создать свою реализацию в классе, наследуемую от общего интерфейса, так как методы там одни и те же (send(), getStatuses(), getBalance()). Из идей самая первая была: создать Contract под каждый шлюз имплеминтировать Helper и каждый Helper зарегистрировать через Service Provider как require_once Helper.php И вызывать каждый из Helperov когда нужно. Выглядит криво, так как правильнее было бы внедрить не конкретный класс а интерфейс. Поэтому я подумал, а что если все сделать также но вызывать не хелперы а сделать маппинг через массив, где мы делаем [mail.ru => MailRuHelper::class, ...] Соответственно в сервис мы делаем инъекцию интерфейса а внизу уже по маппингу находим нужную реализацию. Интересует то, как правильно это реализовать. Еще я читал про Контекстная привязка где разные реализации для разных контроллеров. А есть что то похожее для одного контроллера?]]>https://laravel.ru/forum/profile.php?id=63082020-05-21T07:47:08Zhttps://laravel.ru/forum/viewtopic.php?pid=20231#p20231