Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Добрый день!
Есть несколько методов send() для отправки email каждый из которых реализует функционал отдельного шлюза отправки.
После рефракторинга решил, что правильнее было бы для каждого шлюза создать свою реализацию в классе, наследуемую от общего интерфейса, так как методы там одни и те же (send(), getStatuses(), getBalance()).
Из идей самая первая была: создать Contract под каждый шлюз имплеминтировать Helper и каждый Helper зарегистрировать через Service Provider как require_once Helper.php И вызывать каждый из Helperov когда нужно. Выглядит криво, так как правильнее было бы внедрить не конкретный класс а интерфейс.
Поэтому я подумал, а что если все сделать также но вызывать не хелперы а сделать маппинг через массив, где мы делаем [mail.ru => MailRuHelper::class, ...]
Соответственно в сервис мы делаем инъекцию интерфейса а внизу уже по маппингу находим нужную реализацию.
Интересует то, как правильно это реализовать.
Еще я читал про Контекстная привязка где разные реализации для разных контроллеров. А есть что то похожее для одного контроллера?
Не в сети
Страницы 1