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