Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Хорошие практики (FAQ) » Организация кода DI, IoC, Intarface » 21.05.2020 10:47:08

Gendel
Ответов: 0

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

#2 Laravel 5.x » Как сгруппировать множественные однотипные запросы к БД в один ? » 26.10.2019 16:15:03

Gendel
Ответов: 1

Нужно получить из бд информацию по 1000 и более номерам за раз, как это сделать пачкой, а не доставать каждый конкретный номер ?
На данный момент, есть что-то вроде этого:

DB::table('phones')
->where(....)
->where(....)
->select('operator','region')
->get();

И так для каждого номера, а как пустить сразу пачку номеров и сразу пачкой достать по каждому из них нужные данные ?

Подвал раздела